Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak wypisać zawartość zmiennej klasy bez wywołania metody?

Ostatnio zmodyfikowano 2011-03-07 10:10
Autor Wiadomość
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
C/C++
#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() ); //INFO: to chcę osiągnąć (tyle że bez wywoływania metody)
    printf( "%s\n", zonk ); //INFO: Tu jest zonk (a chciabym by działało)
    return 0;
}
/edit:
Dodam, że na szablonie boost::shared_ptr ładnie śmiga analogiczny kod.
P-28949
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.
P-28950
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:
C/C++
#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() ); //INFO: działa
    printf( "%s\n", &* zonk ); //INFO: działa
    printf( "%s\n", zonk ); //INFO: działa pod VC++ (GCC nie)
    return 0;
}
/edit:
Pod GCC kod wylatuje w powietrze, ale pod VC++ działa...

/edit2:
C/C++
#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() ); //INFO: działa
    printf( "%s\n", &* zonk ); //INFO: działa
    printf( "%s\n", zonk ); //INFO: nie działa pod VC++ i GCC
    return 0;
}
P-28955
« 1 »
  Strona 1 z 1