char数组编译错误

use*_*593 3 c++

我的代码有什么问题?它不编译..

   class FileNames
   {
        public:
           static char* dir;
           static char name[100];

           static void Init3D()
           {
            FileNames::dir = "C://3D//";
            FileNames::name = "abc";
           }
   };   
Run Code Online (Sandbox Code Playgroud)

Ale*_*ler 5

你不能分配给一个数组,所以FileNames::name = "abc"失败(char arr[4] = "abc"但是,因为这是一个直接的初始化,而不是赋值).也可以在char*这里使用,或者使用strcpy将数据复制到数组或更好的a std::string,这避免了原始字符串的许多缺点.

最重要的是,您需要在函数外部的全局范围内定义静态成员: char FileNames::name[100];.此时,=即使使用数组,也可以使用初始化语法,但要分配的字符串需要与数组具有相同的长度.