2016-08-21 15 views
-1

戻り値の型 'class A'が不完全で、 'B'から非スカラー型 'A'への変換が要求されました。 C++でクラスを書くのはあまりよくないので、私が何をやっているのか分かりません。どんな助けもありがとう!ありがとう。
これはコードである:C++ 'B'から非スカラー型 'A'への変換が要求されました

+0

前方宣言されたクラスでポインタまたは参照を使用する必要があります。 –

答えて

1
#include <iostream> 

using namespace std; 
class A; 
class B 
{ 
    int x; 
    public: B(int i=10) {x=i;} 
    operator A(); 
}; 
B::operator A() {return x;} 
class A 
{ 
    int x; 
    public:A(int i=7) {x=i;} 
    int get_x() {return x;} 
}; 
int main() 
{ 
    B b; 
    A a=b; 
    cout<<a.get_x(); 
    return 0; 
} 

クラスAを使用して、値によってAのインスタンスを返す変換演算子(operator A();)からそれを返すことができる前に、完全に定義される必要があります。値を返すという事実はここで重要です。これは型をあらかじめ完全に定義する必要があるからです。

あなたのコードは次のようになります。

#include <iostream> 

using namespace std; 

class A 
{ 
    int x; 
    public:A(int i=7) {x=i;} 
    int get_x() {return x;} 
}; 

class B 
{ 
    int x; 
    public: B(int i=10) {x=i;} 
    operator A(); 
}; 

B::operator A() {return x;} 

int main() 
{ 
    B b; 
    A a=b; 
    cout<<a.get_x(); 
    return 0; 
} 

対応する出力は次のようになります。

Coliruで検証
10 

関連する問題