gpt4 book ai didi

c++ - 覆盖派生类中的模板基方法?

转载 作者:行者123 更新时间:2023-11-27 22:45:27 26 4
gpt4 key购买 nike

假设我有一个基类如下:

template <typename T>
class Base {
// implementation
void do_something() { /* ... */ } ;
};

然后,我创建一个 Derived 类,如下所示,并覆盖 do_something() 方法:

template <typename T>
class Derived : public Base<T> {
// implementation
void do_something() { /* ... */ } ;
};

我知道虚拟化在类模板中不起作用,我只是隐藏了方法的实现。但我确实想将一堆派生类和基类存储到一个 vector 中,(我不想使用类型删除或多态性),

我的问题是,考虑到 Derived 类到基类的 static_cast 给了我基类的 do_something,有没有办法我可以将它们存储为基类,同时每个基类都有 do_something() 类的实现?

最佳答案

but I do want to store a bunch of derived classes and base classes into a vector, (I do not want to use type erasure, or polymorphism),

这在 C++ 中已经不可能了。在 C++ 中, vector 只能包含相同静态类型的对象。 vector 可以包含不同类型对象的唯一方法是它们的静态类型仍然相同,但它们具有不同的动态类型,但这是您说过不想使用的类型删除/多态性。

我认为您可能需要重新考虑您的要求,因为您的问题本质上是:我想做某事,但我不想使用技术 X,它被明确定义为在 C++ 中做某事的唯一方法!

关于c++ - 覆盖派生类中的模板基方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43701290/

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