以下代码产生编译错误invalid conversion from 'const char*' to 'char*'
。 ptrInputFileName
和ptrFileName
都声明为const char*
。关于如何编译的任何建议?谢谢。
TextInputBuffer::TextInputBuffer(const char *ptrInputFileName)
: ptrFileName(new char[strlen(ptrInputFileName) + 1])
{
//--Copy the file name.
std::strcpy(ptrFileName, ptrInputFileName);
答案 0 :(得分:4)
strcpy
将目标作为非常量指针char*
,ptrFileName
为const char*
。不可能进行隐式转换,我不建议进行显式转换。只需使ptrFileName
非const。
答案 1 :(得分:4)
显然,你不能复制到const *指向的东西 - 删除const,如果这导致调用构造函数的问题,你在做一些语义上无效的事情。
此外,您使用伪匈牙利语会使代码难以阅读。丢失ptr
前缀,并缩短名称。
答案 2 :(得分:3)
使用std :: string。
struct TextInputBuffer {
TextInputBuffer(const char *filename)
: _filename(filename)
{}
// Explicit delete not even required as it would have been
// when you used new.
private:
std::string _filename;
};