在托管的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()