установка обратного вызова C ++ в C ++ / CLI, который ожидает переопределение виртуальной функции - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть рабочий код на C ++, который я нахожусь в процессе создания оболочки в C ++ / CLI, поэтому я могу использовать его в C #.

Один из методов в коде C ++ - установить функциюуказатель.Указатель на функцию указывает на класс, который наследуется от виртуального класса.

Это виртуальный класс:

class Transmitter
{
    public:
        virtual bool Transmit(uint64_t desintation, uint8_t message) = 0;
};

Для установки указателя функции есть функция:

SetOutgoingFunction(Transmitter* const transmitter)

В C ++, предполагая, что TransmitterObject является классом, который наследуети переопределяя функцию Transmit, я устанавливаю указатель, используя:

SetOutgoingFunction(&TransmitterObject)

Все это прекрасно работает в области C ++.Я провел много исследований, пытаясь понять эту оболочку, вот несколько хороших ресурсов: codeproject и microsoft .

В оболочке я нахожусь в точке, где у меня есть указатель на функцию, которая готова к передаче в SetOutgoingFunction.Проблема в том, что указатель относится не к классу Transmitter.CLI не позволяет мне наследовать от класса Transmitter, поскольку это не класс ref.

Что мне делать?

Я мог бы изменить код C ++, чтобы использовать другой тип указателя на функцию,хотя я верю, что способ, которым я это настроил, - правильный путь.Если это так, как мне приспособиться к этому на уровне C ++ / CLI?

...