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

Problem z konstrukcją obiektu

Ostatnio zmodyfikowano 2013-12-10 16:00
Autor Wiadomość
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:
C/C++
#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(getB());
    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?
P-98872
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 { } };
P-98873
Adik80
» 2013-12-10 11:48:36
Podwojhne nawiasy tez powinny zadzaialac: C c((B()));
P-98881
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.
P-98893
« 1 »
  Strona 1 z 1