【发布时间】:2010-09-30 05:18:18
【问题描述】:
我有一个简单的类名:
class Name
{ private:
char nameStr[30];
public:
Name(const char * = "");
char * getName() const;
void print() const;
};
我有两个问题,这对我来说有点困难。构造函数应该采用 const char * 的参数并将其复制到 nameStr 数组中。但是,这是我尝试过但不起作用的方法:
Name::Name(const char * setName)
{
&nameStr = setName;
}
它给了我错误“赋值中的左值无效”。如果我删除 nameStr 前面的引用,它仍然会出错,说“将 'const char*' 分配给 'char[30]' 时类型不兼容”。不太清楚我错过了什么。
另一个问题是访问器方法:
char * Name::getName() const
{
return &nameStr[0];
}
我有同样的问题,它错误“从 'const char*' 到 char*' 的无效转换”,我无法终生弄清楚如何让它返回一个指向 const char 的指针。 . 我一直在寻找有用的。在 const 上找到了大量信息,但不太清楚如何将其应用于我的情况。任何帮助将不胜感激!
【问题讨论】:
-
相关,你应该问问自己为什么使用 char[30] 而不是 std::string。如果没有出现重要原因,则其他问题自动解决。
-
我也强烈推荐使用 std::string 除非有充分的理由不这样做。处理 std::string 对象会容易得多。
-
嘿,感谢关于 std::string 的提示。它是作业的一部分,因此必须使用 C 风格的字符串。我应该在问题中注明。
标签: c++