类型为const char*的值不能分配给类型为char*的实体



我有一个类,如下所示(我删除了无关项目(:

class GL_Texture
{
public:
GL_Texture();
private:
char* fileLocation;
};

它的构造函数看起来像这样:

GL_Texture::GL_Texture()
{
fileLocation = ""; //  error C2440: '=': cannot convert from 'const char [1]' to 'char *'
}

构造函数正在生成错误error C2440: '=': cannot convert from 'const char [1]' to 'char *'。即使我试图使fileLocation成为char* const,我在上也会出现以下错误

error C2166: l-value specifies const object

如果我不能将字符串文本分配给char*,并且不能将fileLocation限定为const的指针,那么我应该如何在构造函数中初始化它?

您有几个选择:

  1. 首先,大多数人会同意在大多数情况下最好的一个:不要使用char *,使用std::string

  2. 其次,初始化为nullptr

  3. 第三个:fileLocation = strdup("");,然后在析构函数中清理它。这太难看了。

  4. 第四:改为char const *

最新更新