gpt4 book ai didi

c++ - 基类 'class std::vector<...>' 有一个非虚析构函数

转载 作者:太空狗 更新时间:2023-10-29 23:21:23 26 4
gpt4 key购买 nike

我的一个 C++ 类派生自 std::vector,因此它可以充当容器,也可以对其内容执行自定义操作。不幸的是,编译器提示析构函数不是虚拟的,我无法更改,因为它在标准库中。

我是不是做错了整件事(你不应该从 STL 派生)或者我可以做些什么来让编译器满意? (停止使用 -Weffc++ :)

编辑:派生类不涉及 vector 操作算法,而只是添加一些信息,例如图像 vector 的“元素宽度/高度”。例如,您可以想到

class PhotoAlbum: public std::vector<Photo> {
String title;
Date from_time, to_time;
// accessors for title and dates
void renderCover(Drawable &surface);
};

您将相册主要视为具有一些元数据(标题和时间)和特定于相册的功能(例如将某些照片的缩略图渲染到表面上以制作相册封面)的图片集合。所以恕我直言,相册是 Photo 的集合,而不是 HAS-这样的集合。

我没有看到在 PhotoAlbum 中使用 getPhotoVector() 方法可以获得任何好处,因为它会有一个额外的“集合”字段。

最佳答案

为什么不使用组合?只需使 std::vector 成为自定义容器的成员,然后将自定义操作实现为作用于 std::vector 成员的所述类的成员函数。这样,您就可以完全控制它。此外,you should prefer composition over inheritance如果不需要继承。

关于c++ - 基类 'class std::vector<...>' 有一个非虚析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601431/

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