我有一个(部分实现的)类层次结构,其中
template<typename T> {
class data {
data ( string s ) {}; // loads from file
...
}
class image: public data <T> {
image ( string s ) {}; // loads from file
...
}
class jpgimage : public image<T> {
jpgimage ( string s ) {}; // loads from file
...
}
// other image types
}
现在在我的其余代码中,我希望能够从某物是 jpeg 图像还是图像中抽象出来,所以我想使用data
. 但同时我想将特定于 jpeg 图像的命令传递给这些函数。
因此,如果我调用data<int> img("lena.jpg");
的结果是图像,甚至是 jpeg 图像,我希望数据构造函数调用图像构造函数,而图像构造函数又调用 jpgimage 构造函数。
我无法让它工作,人们警告切片、虚拟构造函数等。但这是一种奇怪的设置方式吗?