我不明白为什么以下失败:
#include<string>
class Foo
{
public:
std::string** GetStr(){return str;}
private:
std::string * str[10];
};
由于
答案 0 :(得分:1)
首先,您将其标记为C ++和C.这是什么? C没有字符串类。如果是C ++,请删除C标签,这是误导性的(它们不是同一种语言!)。
编辑:我误解了你要做的事情。你的方法应该编译。您只需记住取消引用返回的str以获取字符串。
我很少处理双重间接,但你必须做这样的事情来设置字符串:
*(*str) = "STR"; //or
*(str[i]) = "STR";
我不知道你将如何在这里使用地址运算符,因为它返回一个引用而不是一个指针。
在str数组中设置字符串。你的方法真的很奇怪。问题是编译器不知道您要取消引用字符串,因此它尝试取消引用char *。
但是,我不明白你为什么要这样做。这样做会更好:std::string str[10];
std::string* GetStr() { return str; }