【发布时间】:2015-10-02 01:49:22
【问题描述】:
#include "RegionsSingleImage.hpp"
#include <iostream>
#include <vector>
using std::vector;
using std::cerr;
using std::cout;
using std::endl;
RegionsSingleImage::RegionsSingleImage(std::string fName){
#ifdef __CVLOADIMAGE_WORKING__
im = cvLoadImage(fName.c_str(), CV_LOAD_IMAGE_COLOR);
#else
im = readImage(fName.c_str(), CV_LOAD_IMAGE_COLOR);
#endif
if(im == NULL)
{
cerr << "Could not read image from " << fName << endl;
assert(false);
}
list = new std::vector<Region *>;
}
RegionsSingleImage::RegionsSingleImage(IplImage *I)
{
assert(I != NULL);
im = cvCreateImage(cvGetSize(I), I->depth, I->nChannels);
cvCopy(I, im, 0);
list = new std::vector<Region *>;
}
RegionsSingleImage::~RegionsSingleImage()
{
if(list)
for(unsigned int i=0; i< list->size(); i++)
if(list->at(i))
delete(list->at(i));
delete(list);
cvReleaseImage(&im);
}
我需要将我的析构函数设为虚拟,因为它处理抽象对象,但是我不确定我可以在哪里放置“虚拟”关键字或如何根据布局组织代码。感谢您的帮助!
【问题讨论】:
-
virtual关键字需要放在 declaration(通常在 .hpp 文件中),而不是 定义(通常在 .hpp 文件中)。 cpp 文件,内联或模板函数除外)
标签: c++ virtual abstract overloading