Visual Studio (2010) でコードをコンパイルしようとしたときに奇妙な問題が発生しました。以下は、分離された (単純化された) 例です。
class A
{
public:
enum {
VALUE = 0
};
};
namespace ns
{
class A;
class B
{
public:
B(int val = ::A::VALUE) // this line
{}
};
class A : public ::A
{
public:
};
}
これにより、次のエラーが発生しますerror C2027: use of undefined type 'ns::A'
。VSのバグですか、それとも何か間違っていますか?
更新:これは Visual Studio 固有のバグのようです。Microsoft Connect で提案されている回避策を次に示します。
class B
{
public:
typedef ::A A1;
B(int val = A1::VALUE)
{}
};