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