Я хотел бы сделать что-то, что, вероятно, невозможно в Cpp, но я не смог найти сообщение об этом конкретно.
Я хочу, чтобы производный класс указывал тип void * параметр виртуальной функции.
У меня есть базовый класс interface с функцией отправки.
// pure virtual
class Interface{
virtual bool Send(const void*)=0;
};
struct Packet{
DataType data;
};
class SpecificInterface{
bool Send(const DataType*);
}
Есть ли способ заставить что-то подобное работать? Смысл в том, что SpecificInterface :: Send реализует Interface :: Send. Разрешение SpecificInterface не быть чисто виртуальным при ограничении void * конкретным c типом пакета.
В противном случае я знаю, что могу взять параметр void * и static_cast его в тип Packet *; однако я не хочу, чтобы другие отправляли тип указателя, который не может быть преобразован в Packet *.
Сообщите мне, если это не ясно