Можно ли создавать и использовать пользовательские методы расширения System :: String ^ в C ++ / CLI? - PullRequest
0 голосов
/ 07 марта 2012

Я попытался создать расширение для встроенного класса String с помощью C ++ / CLI и использовать его из C ++ / CLI безуспешно.

Вот самое простое, что я могу свести к следующему:

[System::Runtime::CompilerServices::Extension]
public ref class MyStringExtensions abstract sealed {
    public:        
        [System::Runtime::CompilerServices::Extension]
        static bool TestMethod(System::String^ str) { return false; }
};

Теперь, когда я пытаюсь использовать это в другом коде C ++ / CLI, я получаю сообщение компилятора, указывающее, что TestMethod не является методом String.

String^ foo = gcnew ...
...
blah = foo->TestMethod();  // compile-error

Есть идеи?

1 Ответ

3 голосов
/ 07 марта 2012

C ++ не имеет методов расширения.

Но у него есть ADL (поиск, зависящий от аргументов, также известный как поиск Кенига) , что, возможно, даже лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...