我不明白为什么下面的代码会失败:
#include<string>
class Foo
{
public:
std::string** GetStr(){return str;}
private:
std::string * str[10];
};
谢谢
发布于 2009-08-05 11:38:12
首先,将其标记为C++和C。是哪一个?C没有string类。如果是C++,请去掉C标签,这是误导(它们不是同一种语言!)。
编辑:我误解了你的意图。你的方法应该会被编译。您只需记住取消对返回的str的引用即可获得该字符串。
我很少处理双重间接寻址,但您必须这样做才能设置字符串:
*(*str) = "STR"; //or
*(str[i]) = "STR";
我不知道如何在这里使用地址操作符,因为它返回一个引用,而不是一个指针。
设置str数组中的字符串。你的方法真的很奇怪。问题是编译器不知道您想要取消对字符串的引用,所以它尝试取消对char*的引用。
不过,我不明白你为什么要这样做。这样做会更好:
std::string str[10];
std::string* GetStr() { return str; }
https://stackoverflow.com/questions/1235286
复制