【发布时间】:2020-12-13 13:11:16
【问题描述】:
这是我遇到问题的代码
class MyString {
char* str;
public:
MyString(const char* _str) : str(_str) {}
}
这是来自编译器的错误信息
错误:从‘const char*’到‘char*’的无效转换[-fpermissive]
这是因为str 是char* 而_str 是const char*?
副本(我的意思是str(_str))应该是完全相同的类型(关于const)吗?
我怎样才能把这段代码修改成合理的代码?我想将MyString(const char* _str) 保留为const char*。
【问题讨论】:
-
这不是复制构造函数!并且类型需要完全相同,是的。
-
如何将这段代码修改成合理的代码?
-
不要将该指针分配给您内部保存的类成员。您需要为其分配和管理内存以保存指针参数指向的内容的副本。我想这就是这个构造函数的目的。
标签: c++ constructor constants