首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在C++类声明中临时使用类名?

是否有可能在C++类声明中临时使用类名?
EN

Stack Overflow用户
提问于 2017-03-24 20:35:47
回答 1查看 71关注 0票数 0

为了减少重复--不需要求助于#define--我想做以下几件事:

代码语言:javascript
复制
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
};

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

代码语言:javascript
复制
typedef ???<DerivedFOO> DerivedFOO;

但另一方面,我知道C++模板本身就是一种图灵完整的语言,所以也许有什么方法可以做到这一点,而不是太麻烦?

  • 回答“使用#define是最不模糊的方式来满足您的需求”将被我接受,如果这是最后最令人信服的答案。
  • 我现在被C++11困住了。但是依赖于更新的语言迭代的答案仍然会被接受(我会接受对一般观众来说似乎最好的答案,即使我自己的需求需要其他的东西)。
EN

回答 1

Stack Overflow用户

发布于 2017-03-24 20:43:57

这样做能满足你的要求吗?

代码语言:javascript
复制
enum NAMES 
{
    NAME1,
    NAME2,
    ....
};

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

并将用作:

代码语言:javascript
复制
Derived<NAME1> a;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43008696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档