簡體   English   中英

C ++類表達式必須是可修改的左值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM