Почему моя статическая функция-член не распознается в сборках? - PullRequest
0 голосов
/ 10 марта 2010

У меня есть вспомогательная сборка, которая включает функцию для идентификации типов объектов:

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);

.. выдает ошибку:

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

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

1 Ответ

1 голос
/ 10 марта 2010

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

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

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

...