无法从C#代码中调用类模板的非虚拟函数

时间:2019-05-29 09:05:53

标签: c# c++ inheritance c++-cli

在托管的c ++项目中,我有一个类模板BaseClass,其中包含虚拟方法virtMethod()和非虚拟实例方法nonVirtMethod()

template<typename T>
public ref class BaseClass {
public:     
    virtual void virtMethod() {

    }

    void nonVirtMethod() {

    }
};

我还有一个类DerivedClass,它是从类模板BaseClass继承的

public ref class DerivedClass : public BaseClass<System::String> {
public:
    DerivedClass();
};    

在c ++项目中,我可以从virtMethod()实例中调用nonVirtMethod()DerivedClass,但是在引用c ++项目库的c#项目中,我只能调用{{1} }。您能解释一下为什么会发生吗,为什么我不能从virtMethod()类实例中调用方法nonVirtMethod(),除非它是虚拟的?

在C ++(/ clr)项目中。一切正常:

DerivedClass

在C#项目中。错误,auto obj = gcnew DerivedClass(); obj->nonVirtMethod(); 不包含DerivedClass的定义:

nonVirtMethod()

0 个答案:

没有答案