以下代码无法在 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;
}
最佳答案
或者你可以:
//forward declaration of Bar
struct Bar;
class Foo1
{
public:
int val;
operator Bar() const;
};
struct Bar
{
int val;
};
//Now it should compile
Foo1::operator Bar() const
{
Bar x;
x.val = val;
return x;
}
关于c++ - 如何在 C++ 中为前向声明类型实现一元运算符重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675696/