2010-03-10 2 views
0

У меня есть вспомогательный узел, который включает в себя функцию для определения типов объектов:Почему моя статическая функция-член не распознается в сборках?

namespace Util 
{ 
    using namespace System; 

    public ref class CastingHelpers 
    { 
    public: 
     template < class T, class U > 
     static System::Boolean isinst(U u); 

     static bool Test() {return true;} 
    }; 
} 

... но по какой-то причине, когда я пытаюсь использовать его в приложение с графическим интерфейсом, который ссылается на сборку:

Util::CastingHelpers::Test(); 

Util::CastingHelpers::isinst<SomeClass^>(someInstance); 

..gives мне ошибку:

2>.\DataProcessor.cpp(161) : error C2039: 'isinst' : is not a member of 'Util::CastingHelpers' 

Обратите внимание, что тест работает нормально. Это связано с тем, что isinst использует дженерики?

ответ

1

Вы не создаете общую функцию, вы создаете функцию шаблона C++, которая не экспортируется из сборки.

Используйте ключевое слово generic вместо template для создания типов и методов .NET.

Метод шаблона отображается только кодом, который # включает его объявление.

Смежные вопросы