Inheritance 在基类中创建派生类实例

Inheritance 在基类中创建派生类实例,inheritance,c++-cli,Inheritance,C++ Cli,是否有一种方法可以从基本类创建派生类实例 如果我尝试这样的代码 public ref class Foo { static Bar^ Create () { return gcnew Bar (); } }; public ref class Bar : Foo {}; 我犯了一个错误 错误C2143:语法错误:缺少“;”在“^”之前 如果我试图更改这些定义的位置: public ref class Bar : Foo {}; public ref class Fo

是否有一种方法可以从基本
创建派生
实例

如果我尝试这样的代码

public ref class Foo
    {
    static Bar^ Create () { return gcnew Bar (); }
    };

public ref class Bar : Foo {};
我犯了一个错误

错误C2143:语法错误:缺少“;”在“^”之前

如果我试图更改这些定义的位置:

public ref class Bar : Foo {};

public ref class Foo
    {
    static Bar^ Create () { return gcnew Bar (); }
    };
我犯了一个错误

错误C2504:“Foo”:基类未定义


<> P+C++编译器与C++编译器有相同的限制。它是一个单过程编译器,所有声明必须在使用前已知。你必须跳过C++中的同一个环,你必须写一个前向声明:

好的,现在所有定义都可用:

Bar^ Foo::Create() {
    return gcnew Bar; 
}

Fwiw:再也不能内联定义Create()函数了。内嵌代码的抖动是一个工作,它总是嵌入CrEATE()、./P> < P>等小方法,C++/CLI编译器具有与C++编译器相同的限制。它是一个单过程编译器,所有声明必须在使用前已知。你必须跳过C++中的同一个环,你必须写一个前向声明:

好的,现在所有定义都可用:

Bar^ Foo::Create() {
    return gcnew Bar; 
}

Fwiw:再也不能内联定义Create()函数了。这是内联代码抖动的工作,并且总是内联像Create()这样的小方法。

所以内联方法无法实现这一点?正如我所指出的,不要担心内联方法,它与C++/CLI代码无关。与C++代码无关的BTW,现代优化器完全忽略内联提示。我只喜欢当所有方法都是内联的或在SabReTe>代码> CPP < /Cord>文件(EasyAearch)上。我想我要么将所有方法移出,要么创建一个例外。因此,内联方法无法实现这一点?正如我所指出的,不要担心内联方法,它在C++/CLI代码中是不相关的。与C++代码无关的BTW,现代优化器完全忽略内联提示。我只喜欢当所有方法都是内联的或在SabReTe>代码> CPP < /Cord>文件(EasyAearch)上。我想我要么把所有方法都移出,要么做个例外。