在没有初始化列表的情况下,在c++的headerfile中为const int赋值
Assigning values to const int in headerfile in c++ without initialization list
我得到了17个整数常量,我想在类中将其作为私有常量。真的有必要使用初始化列表吗?
我在某个地方读到,我可以在头文件中为常量赋值,但似乎不起作用。我收到这个错误消息:
sorry, unimplemented: non-static data member initializers
真的有必要使用初始化列表吗?
在现代(2011年)C++中,没有。在该语言的旧版本中,是的。
您的错误消息是抱歉的,您的编译器还不支持非静态成员的新初始化语法。假设您使用的是GCC(因为我从编译器中识别出了这个错误),那么根据本页,您需要升级到该功能的至少4.7版本。
或者,由于它们是私有的和恒定的,您可以考虑将它们从类中移出到类的实现文件中的本地命名空间中。当然,只有当您不需要从任何内联成员函数访问它们时,这才有效。
最后,如果它们对于类的所有实例都具有相同的值(很可能,因为它们是const
,并且您可以独立于构造函数参数对它们进行初始化),则可以将它们声明为static
。然后可以在声明中对它们进行初始化(尽管较旧的编译器可能只允许在它们具有整数类型的情况下进行初始化)。然而,如果它们是odr使用的(粗略地说,如果您需要获取指向它们的指针或引用),那么它们也需要在一个源文件中定义。
.h:
class MyClass {
public:
MyClass();
~MyClass();
int doSomething();
private:
const int m_newint = 1;
const int m_dosomething = 2;
};
.cc:
MyClass::MyClass() {}
MyClass::~MyClass() {}
int MyClass::doSomething() {
return m_dosomething;
}
是有效的C++11代码,请确保编译器设置为-std=c++11
以使用特色
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 在c++中为double类型的数组创建一个unique_ptr
- 在 CMake 中为每个目标设置编译器/链接器标志
- 如何在 C++20 计时中为日期添加天数?
- 在C++中为链表类创建实例
- 在 UML 类图中为C++类添加构造函数和析构函数
- 我应该在简单的策略游戏中为各个派系使用类吗 - C++
- 仅在函数模板中为那些定义了函数的类型执行函数
- 如何在C++中为表面制作邻接矩阵
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- 在 C++ 中为文件名添加时间戳
- 如何在C++中为堆栈动态创建结构?
- 如何限制在C++中为单个类创建的对象数量?
- 在 c++11 中为 pthread 设置调度参数
- 从精灵表在 sfml 中为精灵制作动画
- 如何在C++中为字符串添加字符?
- 在没有初始化列表的情况下,在c++的headerfile中为const int赋值