首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在以子类为模板参数的父模板类中使用较大的子类?

如何在以子类为模板参数的父模板类中使用较大的子类?
EN

Stack Overflow用户
提问于 2021-07-07 21:59:54
回答 1查看 79关注 0票数 4

我是逆向工程和重新创建一个程序,它实现了全局静态单点。"A“是存储在单例中的类,"B”是单例本身。是否有任何方法使下列代码工作?

代码语言:javascript
复制
template <class TClass>
class B
{
    static char cBuffer[sizeof(TClass)];
};

class A : public B<A> {
  int a;
  int b;
};

此代码段将生成以下错误:

代码语言:javascript
复制
<source>:4:22: error: invalid application of 'sizeof' to an incomplete type 'A'
        static char cBuffer[sizeof(TClass)];
                            ^~~~~~~~~~~~~~
<source>:7:18: note: in instantiation of template class 'B<A>' requested here
class A : public B<A> {
                 ^
<source>:7:7: note: definition of 'A' is not complete until the closing '}'
class A : public B<A> {
      ^
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-07 22:18:39

你可以这样做,但这并不理想:

代码语言:javascript
复制
template <class TClass>
class B
{
    static char cBuffer[];
};

class A : public B<A> {
  int a;
  int b;
};

template <>
char B<A>::cBuffer[sizeof(A)];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68293403

复制
相关文章

相似问题

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