我的代码有什么问题?它不编译..
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)
你不能分配给一个数组,所以FileNames::name = "abc"失败(char arr[4] = "abc"但是,因为这是一个直接的初始化,而不是赋值).也可以在char*这里使用,或者使用strcpy将数据复制到数组或更好的a std::string,这避免了原始字符串的许多缺点.
最重要的是,您需要在函数外部的全局范围内定义静态成员:
char FileNames::name[100];.此时,=即使使用数组,也可以使用初始化语法,但要分配的字符串需要与数组具有相同的长度.