子类包含基类使用的静态成员
subclass contains a static member that base class uses
在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++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 如何在C++中使用非静态成员函数作为回调函数
- (C++)为什么静态成员可以在初始化之前使用
- 类的全局对象和静态成员
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 模板化类中静态成员的延迟初始化
- 成员包含其他继承类的继承类?
- 使用静态成员声明类时遇到问题
- C++:是否可以使用非静态成员变量模板?
- 静态成员函数使用相同的名称时出现模板类型名称错误
- 如何在复杂继承中访问静态成员变量
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 如何在友元函数中使用静态成员而不添加前缀 [类名]::
- C++构造函数和静态成员
- 具有静态成员的类包含C++中的静态成员
- 在包含其自身类型的静态成员的类中使用 __declspec(dllimport)
- 为什么在包含类的构造函数之前调用静态成员的构造函数
- 初始化包含数组的类的静态成员
- 创建一个类,其静态成员容器包含所述类的所有实例
- 子类包含基类使用的静态成员