![](/img/trans.png)
[英]C++ : expression must be a modifiable lvalue then undefined reference to class
[英]C++ class expression must be a modifiable lvalue
我有以下代碼
#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";
}
};
但是fileName =“ zzz.txt”給出了語法錯誤,即
Expression must be a modifiable lvalue
通常,您要使用初始化列表來初始化構造函數中的成員:
canvas()
: fileName("zzz.txt")
{
}
執行此操作時:
fileName = "zzz.txt";
您正在嘗試為數組分配值,這是非法的。 您可以使用值初始化數組,但是此后不能為它分配值(整體)。 使用initializer-list語法可以使用適當的值對其進行初始化。
但是,如果使用的是較舊的編譯器,則可能必須改用strcpy
:
strcpy(fileName,"zzz.txt");
對於可以分配的其他類型,嚴格地不需要使用initializer-list語法,但通常還是個好主意。
另外,正如其他人指出的那樣,除非您有充分的理由不這樣做,否則最好使用std::string
而不是原始字符數組。 一個std::string
將允許任意長度的字符串,可以將其視為常規值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.