c++ - 子类包含基类使用的静态成员

标签 c++ c++11

在 C++11 中,有什么方法可以在(抽象)基类构造函数访问的子类中定义静态成员变量?我没有成功尝试弄乱初始化列表,并尝试将非静态基类指针设置为该静态子类成员。我开始认为我必须为每个子类编写一个单独的构造函数,这样我才能做到这一点。有什么想法吗?

最佳答案

您可以将子类类型作为模板参数传递给基类:

#include <iostream>

template <typename Derived>
struct Base
{
    Base()
    {
        std::cout << Derived::value << std::endl;
    }
};

struct Foo : Base<Foo>
{
    static const std::size_t value = 100;
};

struct Bar : Base<Bar>
{
    static const std::size_t value = 999;
};

int main()
{
    Foo baseFoo;
    Bar baseBar;
}

live example

关于c++ - 子类包含基类使用的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544271/

相关文章:

c++ - Qt如何修改windows系统时间?

c++ - 在这个失败的 C++ 类实例化中,我忽略了什么明显的事情?

c++ - 游标与迭代器模式

c++ - 如何连接 vector 的两个元素?

c++ - 将 std::conditional 与迭代器一起使用

c++ - 使用对另一个不同类型的元组元素的非常量引用来初始化元组的元素

c++ - 在编译时在 static_assert() 中显示整数

c++ - 我的 C++ 程序中的段错误

c++ - 如何在不使用归约的情况下避免竞争条件

c++ - 函数模板的 typedef(部分实例化)