<分区>
我有一段时间没有写C++代码了,我的 friend 在作业上遇到了麻烦。我从未真正使用过 const
,这让这成为一场噩梦,因为我无法找出构造函数的正确语法。假设我在 dvd.h
中有这个:
class DVD {
const string title;
int minutes;
double price;
public:
DVD(const string t, int m, double p);
}
3个私有(private)成员变量,string
为const
。构造函数还接受一个 const string
。
现在,在 dvd.cpp
中,我可以执行以下操作:
#include "dvd.h"
DVD::DVD(const string t, int m, double p) {
const string title = t;
minutes = m;
price = p;
}
世界上一切都很好。但是,当我将 dvd.h
中的 minutes
修改为 const
(这是他的教授构建文件的方式)时,我们在 DVD.h
:
class DVD {
const string title;
const int minutes; // Here is the change
double price;
public:
DVD(const string t, int m, double p);
}
所以,现在 minutes
是 const
,我得到以下编译错误:
assignment of read-only member 'DVD::minutes' dvd.cpp
uninitialized member 'DVD::minutes' with 'const' type 'const int' [-fpermissive] dvd.cpp
我想这是有道理的,因为我正在尝试将一个值设置到一个const
变量中。因此,我尝试做与 dvd.cpp
中的 const string title
相同的事情,以解决错误:
DVD::DVD(const string t, int m, double p) {
const string title = t;
const int minutes = m; // Was 'minutes = m;'
price = p;
}
并得到以下 (1) 个错误和 (1) 个警告:
uninitialized member 'DVD::minutes' with 'const' type 'const int' [-fpermissive] dvd.cpp
unused variable 'minutes' [-Wunused-variable] dvd.cpp
所以我想我正在努力弄清楚该死的语法是什么... title
和 minutes
应该是是 const
,但是 DVD
的构造函数的参数列表只需要一个 const string
。我不知道我错过了什么 - 自从我上次用 C++ 编码以来已经有一段时间了。