【发布时间】:2011-09-01 15:29:06
【问题描述】:
考虑下一个代码:
#include <iostream>
using namespace std;
class B;
class A
{
public:
A() { p = 1;}
int p;
operator B() {B b; b.x = this->p; return b;}
};
class B
{
public:
int x;
};
int main()
{
A a;
B b = a;
return 0;
}
我正在尝试将 A 转换为 B ,但我得到以下编译器尖叫声:
..\main.cpp:13: error: return type 'struct B' is incomplete
当我这样做时:
#include <iostream>
using namespace std;
class B
{
public:
int x;
};
class A
{
public:
A() { p = 1;}
int p;
operator B() {B b; b.x = this->p; return b;}
};
int main()
{
A a;
B b = a;
return 0;
}
代码可以编译,但问题是:是否可以使用我上面写的前向声明来做到这一点?
非常感谢 罗南
【问题讨论】:
标签: c++ operators forward-declaration