Problem z konstrukcją obiektu
Ostatnio zmodyfikowano 2013-12-10 16:00
b00rt00s Temat założony przez niniejszego użytkownika |
Problem z konstrukcją obiektu » 2013-12-10 01:56:01 Postanowiłem zrozumieć referencje do r-wartości i natknąłem się na błąd kompilacji, którego nie rozumiem. Oto kod: #include <iostream>
struct A { virtual void print() { std::cout << "A" << std::endl; } };
struct B : public A { virtual void print() { std::cout << "B" << std::endl; } };
struct C { A & obj; C( A && a ) : obj( a ) { } void print() { obj.print(); } };
B getB() { return B(); }
int main( int argc, char * argv[] ) { C c( B() ); c.print(); } a oto błąd: request for member 'print' in 'c', which is of non-class type 'C(B (*)())' c.print(); Co ciekawe, gdy problematyczną linię C c( B() ); zastąpię linią C c( getB() ); to wszystko gra. Czy ktoś mógłby mi wyjaśnić ten błąd? |
|
Elaine |
» 2013-12-10 02:16:57 C c( B() ); to deklaracja funkcji. Użyj nawiasów klamrowych zamiast okrągłych: C c { B { } }; |
|
Adik80 |
» 2013-12-10 11:48:36 Podwojhne nawiasy tez powinny zadzaialac: C c((B())); |
|
b00rt00s Temat założony przez niniejszego użytkownika |
» 2013-12-10 16:00:17 Wiedziałem, że to musi być jakaś głupota... Dzięki za pomoc. |
|
« 1 » |