다음 코드는 Visual Studio 2008에서 컴파일되지 않습니다. Foo1 클래스가 Bar로 변환되는 단항 연산자를 허용하려면 어떻게해야합니까?C++에서 전달 선언 된 형식에 대한 단항 연산자 오버로드는 어떻게 구현합니까?
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++의 구조체는 이미 타입입니다. – Puppy
Bar의 정의가 나중에 나타나지 않기 때문에 struct bar를 forward 선언으로 사용하고 있습니다. – camomilk