C/C++LI:从模板类继承的函数在C#中不可见
我很难弄清楚如何在C#中显示父类函数.
假设我有一个模板类,它定义了一个函数foo() template <int Dim,typename Type> public ref class FixedNP { public: float foo() {return 1;}; }; 然后我有一个继承自FixedNP模板的类: public ref class Vector3fP : public FixedNP<3,float> { } 当我尝试从C#调用foo()函数时,例如. Vector3fP bar = new Vector3fP(); bar.foo(); 它说功能Vector3fP不包含foo的定义. 当我将foo()的定义移动到Vector3fP类时,它工作正常.然而,这在实际代码中是不可行的,因为FixedNP模板包含相当多的函数,这些函数应该从大约4个不同的类继承. 经过互联网上的一些搜索,我发现添加了 using FixedNP<3,float>::foo; 到Vector3fP为某人修复了类似的问题.但是在我的情况下,它只会导致另一个错误,这次编译C/C++LI代码时:
有关如何在C#中显示我的函数的任何建议吗? 解决方法
我认为它们的关键在于
Managed Templates on MSDN的这个主张:
这意味着C代码中未使用的函数将不在生成的DLL中,您将无法在C#中使用它们.要解决这个问题,你可以在你的C代码中添加一个虚假的函数,它引用了这个函数: void phony() { auto vec = gcnew Vector3fP(); vec->foo(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |