我有一个类,如下所示(我删除了无关项目(:
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的指针,那么我应该如何在构造函数中初始化它?
您有几个选择:
-
首先,大多数人会同意在大多数情况下最好的一个:不要使用
char *
,使用std::string
。 -
其次,初始化为
nullptr
。 -
第三个:
fileLocation = strdup("");
,然后在析构函数中清理它。这太难看了。 -
第四:改为
char const *
。