Обернуть защищенную функцию-член с помощью C ++ / CLI - PullRequest
0 голосов
/ 25 августа 2011

Я создаю управляемую оболочку .net. Весь код написан на C ++, и я создаю оболочку с использованием C ++ / CLI.

Некоторые функции внутри класса C ++ находятся на защищенном уровне, и, следовательно, я не могу обернуть эти функции. Я продолжаю получать сообщение "не могу получить доступ к защищенному члену, объявленному в ошибке класса, всякий раз, когда я пытаюсь обернуть защищенную функцию.

Есть ли обходной путь для этого?

Ответы [ 2 ]

2 голосов
/ 25 августа 2011

Защищенный метод может быть вызван только из класса или его подклассов.

Нет необходимости заключать в оболочку защищенный метод, потому что он предназначен только для вызова изнутри иерархии классов. Приложение, использующее оболочку, не входит в иерархию классов C ++ или C ++ / CLI.

Даже если бы вы могли вызывать защищенный метод из своего класса-оболочки, кто бы его вызывал? Метод в классе оболочки также будет объявлен защищенным, и потребители класса оболочки не смогут его вызвать.

1 голос
/ 25 августа 2011

Создайте новый неуправляемый класс, производный от вашего существующего неуправляемого класса, и повторно предоставляет защищенные члены как общедоступные. Затем создайте управляемый класс, чтобы обернуть ваш новый производный класс, и пусть it предоставит доступ к первоначально защищенным элементам как защищенным в иерархии управляемого типа.

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