Короче говоря, у меня есть несколько классов, которые я создал для представления данных с разных устройств (на самом деле камеры). Оба они имеют разные поведения под капотом, но взаимодействие построено так же, как и снаружи. Я пытаюсь написать функцию полезности, которая может работать с любым классом или, предположительно, с другими классами, которые я пишу, если взаимодействие будет одинаковым. Я довольно новичок в C++, так что несите меня, если моя терминология не совсем правильная.Как использовать аргумент void * в C++ для нескольких типов объектов?
Так что давайте скажем, что у меня есть эти определения для каждой камеры.
class CamDataA
{
int getImageStart() {return ptrToStart;)
int getImageSize() {return imageSizeVariable;)
};
class CamDataB
{
int getImageStart() {return ptrToStart;)
int getImageSize() {return width*height*channels;)
};
И я хочу, чтобы иметь еще один отдельный класс, который может работать попеременно с обоих классов
class imageUtils
{
//constructors/destructors
int reportSize(void* camData)
{
cout << camData->getImageSize();
}
};
Но ошибка, я получаю при компиляции является:
error: ‘void*’ is not a pointer-to-object type
Является ли это вообще возможно?
ответ правильный, но я предлагаю вам отредактировать его, а также объяснить ему, что вы сделали и почему .. Я не думаю, что он понимает ОО, и это самая большая проблема, с которой он здесь столкнулся :) –
Согласен, я может следовать коду, но все же не знаю конкретно, что вы сделали и почему. Благодаря! –
Спасибо, я отредактирую ответ. Я просто надеялся, что слова «virtual» и «override» помогут ему начать изучение OOP :) Не уверен, что здесь есть подходящее место, чтобы вдаваться в подробности такой хорошо описанной темы, как полиморфизм. – Inspired