[英]'B::operator A' uses undefined class 'A'
我在我的一门 C++ 课程中找到了以下示例。 当我尝试编译它时,出现以下错误:
'B::operator A' uses undefined class 'A'
为什么说A类是未定义的?
#include<iostream>
using namespace std;
class A;
class B
{
int x;
public: B(int i = 107) { x = i; }
operator A();
};
B::operator A() { return x; }
class A
{
int x;
public: A(int i = 6) { x = i; }
int get_x() { return x; }
};
int main()
{
B b;
A a = b;
cout << a.get_x();
system("Pause");
}
编译器需要知道这里的 A 是什么:
B::operator A() { return x; }
但是你只有一个前向声明。 您需要将A
类的声明移到B
上方
您只能使用指向不完整类型的指针或引用,这是您转发声明类型时所拥有的
您需要在 B 之上声明 A,以便 A 的定义对 B 可见。
#include<iostream>
using namespace std;
class A
{
int x;
public: A(int i = 6) { x = i; }
int get_x() { return x; }
};
class B
{
int x;
public: B(int i = 107) { x = i; }
operator A();
};
B::operator A() { return x; }
int main()
{
B b;
A a = b;
cout << a.get_x();
}
这应该有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.