gpt4 book ai didi

c++ - 虚拟方法和模板类

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:08 24 4
gpt4 key购买 nike

我解决了一个问题,我认为是一个非常具体的问题。

我有 2 个类,一个 B seclass 和一个 D 派生类(来自 B aseclass)。B 是一个模板类(或类模板)并且有一个纯虚方法 virtual void work(const T &dummy) = 0;D 派生类应该重新实现这一点,但是因为 D 派生自 B 而不是 D 是另一个模板类,编译器向我吐槽虚函数和模板不能同时工作。

有什么想法可以实现我想要的吗?

我非常感谢任何想法和想法,特别是如果你已经解决了那个问题

这个类是按原样固定的,我不能在不破坏现有代码库的情况下编辑它

template <typename T>
class B {
public:
...
virtual void work(const T &dummy) = 0;
..
};

以int*为例

class D : public B<int*>{
...
virtual void work(const int* &dummy){ /* put work code here */ }
..
};

编辑:编译器告诉我,void B<T>::work(const T&) [with T = int*]D

中是 纯虚拟

最佳答案

你把 const 放在了错误的地方。尝试

virtual void work(int* const &dummy){ /* put work code here */ }

const int*int const* 相同,即它将 const 与 int 而不是指针相关联。

关于c++ - 虚拟方法和模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531063/

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