Я не понимаю, почему следующее не удается:почему указатель на массив не возвращается, как **
#include<string>
class Foo
{
public:
std::string** GetStr(){return str;}
private:
std::string * str[10];
};
Благодарности
Я не понимаю, почему следующее не удается:почему указатель на массив не возвращается, как **
#include<string>
class Foo
{
public:
std::string** GetStr(){return str;}
private:
std::string * str[10];
};
Благодарности
Во-первых, вы отметите это как C++ и C. Что это? C не имеет строкового класса. Если это C++, удалите тег C, он вводит в заблуждение (они не являются одним и тем же языком!).
Редактировать: Я неправильно понял, что вы пытаетесь сделать. Ваш метод должен компилироваться. Вам просто нужно помнить о разыменовании возвращенной строки, чтобы получить строку.
Я редко иметь дело с двойной косвенностью, но вы должны сделать что-то вроде этого, чтобы установить строку:
*(*str) = "STR"; //or
*(str[i]) = "STR";
Я не знаю, как вы будете использовать оператор адреса здесь, потому что он возвращает ссылку а не указатель.
установить строку в массиве str. Ваш метод действительно странный. Проблема в том, что компилятор не знает, что вы хотите разыменовать строку, поэтому она пытается разыменовать char *.
Я не понимаю, почему вы хотите сделать это таким образом. Было бы лучше сделать это:
std::string str[10];
std::string* GetStr() { return str; }
Что это не может сделать? Он компилируется для меня. –
да ... это тоже для меня, у меня был другой тип данных – vehomzzz
, тогда если он все еще не работает, обновите свой вопрос, чтобы включить ваш точный код с вашими типами. –