为什么指向数组的指针无法返回**

时间:2009-08-05 19:36:34

标签: c++

我不明白为什么以下失败:

#include<string>
class  Foo
{
  public:
     std::string** GetStr(){return str;}    

 private:
   std::string * str[10];
};

由于

1 个答案:

答案 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; }