gpt4 book ai didi

c++ - 将指针类型作为模板参数传递

转载 作者:太空狗 更新时间:2023-10-29 20:38:30 25 4
gpt4 key购买 nike

下面的代码

#include <iostream>

template<typename T>
class Abstract
{
public:
virtual ~Abstract()
{}
virtual void func(const T &param) const = 0;
};

class Concrete : public Abstract<int*>
{
public:
virtual void func(const int *&param) const override // watch out!
{}
};

int main()
{
Concrete c;
}

在标有注释的行产生以下编译错误:

error C3668: 'Concrete::func' : method with override specifier 'override' did not override any base class methods

如果我删除 override ,将显示此错误:

error C2259: 'Concrete' : cannot instantiate abstract class

如何从Abstract<int*>导出?

最佳答案

声明Concrete像这样:

class Concrete : public Abstract<int*>
{
public:
virtual void func(int * const &param) const override
{}
};

问题是:Abstract<int*>::f()的参数是哪一部分?是const

答案:自 TconstTAbstract<int*>是一个指针(指向 int ),它是 const 的指针- 不是 int .

关于c++ - 将指针类型作为模板参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31318626/

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