0
class A
{
public:
virtual ~A() {}
virtual Process(cv::Mat& img) {}
} ;
class B : public A
{
public:
Process(cv::Mat& inputimage)
{
if (img.empty())
{
img = inputimage.clone();
return;
}
else
cv::imshow ("image", img);
}
private:
cv::Mat img;
};
Этот img всегда остается пустым при возникновении условия. Путь, я использую этот код в моем основном является:переменная, не сохраняющая данные в производном классе
псевдокоде
int main()`
{
A* a;
a = new B;
while(avi.notempty()
{
a.Process(nextFrame);
}
}
код не является полным, но, по существу, проблема заключается в том, что переменный не хранятся каким-то образом.
Пожалуйста, отредактируйте ваш код. Поскольку это даже не ясно, что это должно делать: это, если ветвь смешивается с 'private:' .. странно! –
если вы сделаете процесс чисто виртуальным, по крайней мере, вы можете отслеживать, если B реализует его правильно, 'класса А { общественность: виртуального ~ A) {} виртуального процесс ((резюме :: Mat & IMG) = 0 ; }; ' – berak
еще раз, пожалуйста, отредактируйте свой код, там будет много ошибок. Процессу нужен тип возврата, a-> Процесс вместо a.Process и т. Д., Не будь таким неряшливым! – berak