Zia*_*mar 3 c++ constructor class
我有以下代码
#include<iostream>
#include<fstream>
using namespace std;
const int MAX_ARRAY = 26;
class canvas{
private:
char painting[MAX_ARRAY][MAX_ARRAY];
char fileName[10];
public:
canvas(){
fileName = "zzz.txt";
}
};
Run Code Online (Sandbox Code Playgroud)
但是fileName = "zzz.txt"给出的语法错误是
Expression must be a modifiable lvalue
Run Code Online (Sandbox Code Playgroud)
通常,您希望使用初始化列表来初始化构造函数中的成员:
canvas()
: fileName("zzz.txt")
{
}
Run Code Online (Sandbox Code Playgroud)
当你这样做时:
fileName = "zzz.txt";
Run Code Online (Sandbox Code Playgroud)
您试图为数组赋值,这是不合法的。您可以使用值初始化数组,但之后不能为其分配值(作为一个整体)。初始化列表语法允许您使用正确的值对其进行初始化。
但是,如果您使用的是较旧的编译器,则可能必须strcpy改用:
strcpy(fileName,"zzz.txt");
Run Code Online (Sandbox Code Playgroud)
对于其他可以赋值的类型,使用 initializer-list 语法并不是绝对必要的,但它通常仍然是一个好主意。
此外,正如其他人所指出的,除非您有充分的理由不这样做,否则最好使用 astd::string而不是原始字符数组。Astd::string将允许任意长度的字符串,可以将其视为常规值。
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |