0
我得到錯誤代碼C2512,這是沒有適當的默認構造函數可用。然而,在我看來,一切都應該工作,所以我有點困惑如何讓這個編譯。如何在C++ cli中正確使用正向聲明的類?
這裏是頭文件代碼:
namespace MyNamespace
{
ref class ForwadDeclaredClass;
public ref class MyClass
{
public:
MyClass();
// ...
private:
ForwadDeclaredClass^ fc;
}
}
現在,在我的cpp文件中,我定義的轉發類,並嘗試在構造函數MyClass的使用它。
using namespace MyNamespace;
//...
public ref class ForwardDeclaredClass
{
public:
ForwardDeclaredClass()
{
}
}
MyClass::MyClass()
{
// Compiler complains with error code here
fc = gcnew ForwardDeclaredClass();
}
我知道我必須缺少一些簡單的東西,但我只是沒有看到它。任何幫助,將不勝感激。
不是*大部分代碼,而只是'ForwardDeclaredClass'的定義。前向聲明是針對'MyNamespace :: ForwardDeclaredClass'進行的,因爲'ref class ForwadDeclaredClass;'行在命名空間內,但定義是針對':: ForwardDeclaredClass'(它位於命名空間之外)。不需要在'namespace'塊中包含'MyClass :: MyClass()'定義 - '使用名稱空間MyNamespace'在那裏生效。 –