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

Jak zgrabnie przenosić między obiektami różnoklasowymi

Ostatnio zmodyfikowano 2011-01-16 19:02
Autor Wiadomość
jsc
Temat założony przez niniejszego użytkownika
» 2011-01-14 18:40:51
Sorry, ale muszę trochę dalej drążyć temat, ponieważ przy zastosowaniu kodu:

C/C++
#include <iostream>

using namespace std;

class CDane
{
public:
    char dane;
   
    void wezDane()
    {
        dane = '7';
    }
};

class CUzywajka
{
private:
   
    void powtorz( CDane & cos )
    {
        cout << cos.dane << endl; //Gdzieś po drodze zapomina wartość?
    }
   
public:
    void wczytaj( CDane & cos )
    {
        cout << cos.dane << endl;
    }
   
    void pokaz()
    {
        void powtorz( CDane & cos );
    }
};

int main()
{
    CDane jakiesDane;
   
    CUzywajka u;
   
    jakiesDane.wezDane();
    u.wczytaj( jakiesDane );
    u.pokaz();
   
    return 0;
}

pojawia się:


7

Komunikaty code:blocksa

Wygląda na to, że jakoś wartość cos.dane nie dociera do funkcji powtorz ().
P-26532
jsc
Temat założony przez niniejszego użytkownika
» 2011-01-15 00:11:14
Udało się mi znaleźć błąd:

C/C++
void pokaz()
{
    void powtorz( CDane & cos );
}

void powoduje wywołanie funkcji.
P-26554
malan
» 2011-01-15 00:51:29
void powoduje wywołanie funkcji.
Widzisz-
void
 potrafi, a Ty nie...
P-26555
jsc
Temat założony przez niniejszego użytkownika
» 2011-01-15 01:09:56
void powoduje wywołanie funkcji.

Rzeczywiście błąd chodziło, że blokuje to wywołanie.
P-26556
malan
» 2011-01-15 01:33:05
Ale wredny ten
void
. Trzeba napisać do tych od c++0x, żeby z go nie uwzględnili w nowym standardzie i wywalili na zbity pysk! Co on sobie myśli?! Że może tak bezczelnie blokować?! Na stos z nim!

/edit:
Tak na poważnie. To TY "blokujesz" (cokolwiek miałeś na myśli mówiąc to). Źle wywołujesz tą metodę!
P-26557
jsc
Temat założony przez niniejszego użytkownika
» 2011-01-16 13:18:41
Rzeczywiście przekombinowałem.

A chodziło o to, że jak napiszę tak:

C/C++
powtorz( CDane & cos );

To wyskakuje błąd:


error: expected primary-expression before '&' token w wierszu 35
error: `cos' was not declared in this scope w wierszu 35
warning: unused variable 'cos' w wierszu 35


P-26602
DejaVu
» 2011-01-16 14:06:42
Wywołując metodę piszesz po prostu:
klasa.metoda( argument );
, gdzie argument to zmienna lub stała.
P-26605
jsc
Temat założony przez niniejszego użytkownika
» 2011-01-16 18:27:01
Spróbowałem:

C/C++
void powtorz( CDane & cos )
{
    cout << cos.dane << endl; //Gdzieś po drodze zapomina wartość?
}

void pokaz()
{
    CUzywajka.powtorz( cos );
}

I wyskakuje:


error: expected unqualified-id before '.' token w wiersz 35

Czyli kompilatorowi nie podoba się kropka.
P-26621
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona