gpt4 book ai didi

c++ - 构造函数调用子类

转载 作者:行者123 更新时间:2023-11-28 03:07:14 24 4
gpt4 key购买 nike

我有一个(部分实现的)类层次结构,其中

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 构造函数。

我无法让它工作,而且人们警告切片、虚拟构造函数等。但这是一种如此奇怪的设置方式吗?

最佳答案

继承用于关系。所以,一个 image<T> 是一个 data<T> ,但不是相反!调用特定于 image<T> 的方法是没有意义的对于 data<T>对象,毕竟它可能不是 image<T> .您想这样做的事实表明您的代码设计存在缺陷。重新考虑您的代码设计。

关于c++ - 构造函数调用子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com