Jak wypisać zawartość zmiennej klasy bez wywołania metody?
Ostatnio zmodyfikowano 2011-03-07 10:10
DejaVu Temat założony przez niniejszego użytkownika |
Jak wypisać zawartość zmiennej klasy bez wywołania metody? » 2011-03-07 01:12:06 Chciałbym wypisać zawartość zmiennej klasy bez wywołania metody. Wiesz Iname jak to zrobić? Pytam Ciebie bo raczej nikt z obecnych forumowiczów tego nie będzie wiedział :P
#include <cstdio> #include <cstring>
class CZonk { char dane[ 20 ]; public: operator char *() { return dane; }; char * get() { return dane; }; };
int main() { CZonk zonk; strcpy( zonk, "tekst" ); printf( "[zonk]\n" ); printf( "%s\n", zonk.get() ); printf( "%s\n", zonk ); return 0; }
/edit:
Dodam, że na szablonie boost::shared_ptr ładnie śmiga analogiczny kod. |
|
pekfos |
» 2011-03-07 08:14:57 może to nie to czego oczekujesz ale działa: printf( "%s\n",( char * ) zonk ); (przy nie zmienianiu klasy) "..." nie jest "const char*" jak w format stringu jest "%s" więc operator konwersji sam z siebie nie zadziała. |
|
DejaVu Temat założony przez niniejszego użytkownika |
» 2011-03-07 10:10:01 Wiem, że rzutowaniem sprawę można załatwić - z tym, że boost::shared_ptr działa dobrze:
#include <cstdio> #include <cstring> #include <boost/shared_ptr.hpp>
int main() { boost::shared_ptr < char > zonk( new char[ 20 ] ); strcpy( &* zonk, "tekst" ); printf( "[zonk]\n" ); printf( "%s\n", zonk.get() ); printf( "%s\n", &* zonk ); printf( "%s\n", zonk ); return 0; }
/edit:
Pod GCC kod wylatuje w powietrze, ale pod VC++ działa...
/edit2:
#include <cstdio> #include <cstring>
class CZonk { char dane[ 20 ]; public: operator char *() { return dane; }; char * get() { return dane; }; };
int main() { CZonk zonk; strcpy( zonk, "tekst" ); printf( "[zonk]\n" ); printf( "%s\n", zonk.get() ); printf( "%s\n", &* zonk ); printf( "%s\n", zonk ); return 0; } |
|
« 1 » |