c++常量如何使它们工作
c++ constants how to make them work
到目前为止,我已经使用DEFINE来声明我的常量。而且效果非常好。
我试图在我的类中使用c++const关键字,但它给出了编译时错误
标题
class User{
public:
User::User();
protected:
const float DATA_Z;
}
.CPP
User::User(){
DATA_Z = 0.0023f;
}
这就是它生成的错误
错误3错误C2758:"用户::DATA_Z":必须在构造函数基/成员初始值设定项列表中初始化
如何将数据分配给它,以及如何在类中使用它们。
错误消息非常清楚。将赋值移到初始值设定项列表中:
User::User(): DATA_Z(0.0023f)
{
}
您想要这样做:
User::User() : DATA_Z(0.0023f)
{
// body of constructor
}
常量成员需要在初始值设定项列表中初始化,因为它们不能直接赋值。对于引用类型的成员也是如此,因为不能更改引用变量的referent。
要简单地替换用#define
定义的清单常量,请编写全局const
s:
#define DATA_Z 0.0023f
成为
const float DATA_Z = 0.0023f;
将常量放入类中意味着您可以在每个对象中具有不同的值,这就是为什么其他答案会告诉您在构造函数中初始化它。这是一个合理的设计决策,但它与将值定义为宏是不同的。
以下代码帮助您传递任何值来初始化DATA_Z
:
`
class User{
public:
User::User(float data=0):DATA_Z(data){}; // here `data` is a local parameter to receive the assigned value.
protected:
const float DATA_Z;
}
`
相关文章:
- 我如何使它,无论用户用空白字符串按 Enter 多少次,它总是打印"开始"字符串?
- 如何使它看起来像正在下的雪
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- 为什么字符串流只读取整数中的第一个数字?如何使它只在空白处移动?
- 将 std::atomic_flag 包裹在吸气剂/二传手中会使它的"atomicity"无效吗?
- 从2011年开始,必须在2019年开始工作以使此Windows Textbox做出哪些更改
- 该代码不会在其中显示任何数字输入.如何使它显示任何输入
- 为什么添加代码会破坏工作,即使它没有执行?
- 为什么输出是 2 而不是 7 ?+ 号如何使它与众不同
- 无论如何,是否可以使用setCursorPos(int,int)函数,但没有采用两个int使它需要速度较慢的两倍
- 程序已停止工作?如何使整数数组大小超过 1,000,000
- 动态链接是如何工作的,它的用法以及如何以及为什么要制作dylib
- 我的线程工作不好,它给出了所有结果,最后没有一个接一个,GUI 在线程运行期间挂起?
- POD 类中的嵌套枚举是否使它不是 POD
- 多个线程同时在unordered_map中添加值会使它崩溃
- C++MessageBox(Windows.h)-它做什么以及如何使它不可见(或等效)
- 如何在c++ dll中实例化一个类,使它在函数调用之间保持内存
- 在QTableWidget中添加一个QPushButton到qtablewidgetiitem,如何使它Qt::Alig
- 延迟初始化缓存..我如何使它线程安全
- old的-u选项是如何工作的,它什么时候有用