c++ 请求从 'B' 型转换为非标量型'A'
c++ Conversion from 'B' to non-scalar type 'A' requested
我有两个错误:返回类型"类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验证
相关文章:
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将整型转换为浮点型时检测溢出
- 是否存在将长整型转换为指针有效的情况
- 从长型转换为相同大小的 int 失败
- 如何以优雅高效的方式将无符号/有符号整数/长整型转换为 C 字符串?
- 如何将VDT的Pade Exp fast_ex()的双重版本的标量代码转换为SSE2?
- 标准::矢量的 C 型转换
- 定义用于迭代不同容器类型的泛型转换迭代器
- 将此 c 型转换为reinterpret_cast是否安全
- 迭代器错误从非标量类型转换为非标量类型
- C++:将无符号长整型长整型转换为无符号长整型
- 请求C++从非标量类型转换为非标量类型
- C++0x 中的 Lambda:错误:请求从非标量类型转换为非标量类型
- 在 c++ 中将长整型转换为十六进制和二进制
- C++ 中请求从 'node*' 型转换为非标量型'node'
- 初始化时无法将长整型*转换为双精度*
- C++:将无符号长整型转换为矢量<uint8_t>原始数据
- 整型转换为字符数组
- 错误:函数"int main()"中请求从 'double' 型转换为非标量类型'Player';
- c++ 请求从 'B' 型转换为非标量型'A'