Мне трудно понять, как сделать функции родительского класса видимыми в 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>
{
}
Когда я пытаюсь вызвать функцию foo () из C #, например.
Vector3fP bar = new Vector3fP();
bar.foo();
itговорит, что функция Vector3fP не содержит определения для foo.
Когда я перемещаю определение foo () в класс Vector3fP, он работает нормально.Однако в реальном коде это невозможно, поскольку шаблон FixedNP содержит довольно много функций, которые должны быть унаследованы от примерно 4 различных классов.
После некоторых поисков в Интернете я обнаружил, что добавление
using FixedNP<3, float>::foo;
, чтобы Vector3fP исправил подобную проблему для кого-то.Однако в моем случае это просто приводит к другой ошибке, на этот раз при компиляции кода C ++ / CLI:
ошибка C3182: «Vector3fP»: декларация использования члена или декларация доступа недопустима в управляемойвведите
Есть предложения, как сделать мои функции видимыми в C #?