c++ 请求从 'B' 型转换为非标量型'A'

c++ Conversion from 'B' to non-scalar type 'A' requested

本文关键字:标量型 转换 请求 c++      更新时间:2023-10-16

我有两个错误:返回类型"类A"不完整,请求从"B"转换为非标量类型"A"。我不确定我做错了什么,因为我不太擅长用c++写类。任何帮助将不胜感激!谢谢。
这是代码:

#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需要完全定义,然后才能从转换操作符(operator A();)返回它,该操作符按值返回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;
}

对应的输出为:

10

与Coliru验证