gpt4 book ai didi

c++ - 是否可以在 C++ 类声明中模板化类名?

转载 作者:行者123 更新时间:2023-11-28 05:14:04 25 4
gpt4 key购买 nike

为了减少重复自己的次数——并且不需要求助于 #define——我想做如下事情:

template <class T>
class T final: public Base
{
public:
T();
virtual ~T();

private:
void method1(T const& that);
const T* method2(char const*); // was pure-virtual in Base
};

一方面,我担心这是不允许的,因为上面的模板没有自己的名称来调用它:

typedef ???<DerivedFOO> DerivedFOO;

但另一方面,我知道 C++ 模板本身是一种图灵完备的语言,所以也许有一些方法可以做到这一点,但又不会过于复杂?

  • 我会接受“使用 #define 是满足您的需求的最简单方式”的回答,如果这最终成为最引人注目的答案的话。

  • 我目前被 C++11 困住了。但是依赖于更新的语言迭代的答案仍然会被接受(我会接受对一般观众来说最好的答案,即使我自己的需要需要其他东西。)

最佳答案

这样能达到你想要的效果吗?

enum NAMES 
{
NAME1,
NAME2,
....
};

template<int Name>
class Derived : public Base
{
...
};

并将用作:

Derived<NAME1> a;

关于c++ - 是否可以在 C++ 类声明中模板化类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008696/

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