【发布时间】:2011-01-13 00:46:52
【问题描述】:
以下代码无法在 Visual Studio 2008 中编译。当 Foo1 在 Bar 之前定义时,如何让它允许 Foo1 类中的一元运算符将其转换为 Bar?
class Foo1
{
public:
int val;
operator struct Bar() const;
};
struct Bar
{
int val;
};
// This does not compile
Foo1::operator Bar() const
{
Bar x;
x.val = val;
return x;
}
【问题讨论】:
-
你不需要
struct Bar,C++的结构已经是类型了。 -
我使用 struct Bar 作为前向声明,因为 Bar 的定义直到稍后才会出现。
标签: c++ visual-studio-2008 operator-overloading forward-declaration unary-operator