class Tool
{
public:
Tool();
~Tool();
private:
char **s;
};
char *s1[]={"hello","world"};
如何初始化s
并使其与s1
相同?
s={"hello","world"}
似乎不起作用。
答案 0 :(得分:1)
虽然您可以使用std::vector<std::string>
,但我觉得直接回答您的问题对您更有帮助。
char** s
是指向指针的指针;可能是指向指针数组中第一个指针的指针。
char* s1[]
是一个指向const数据的指针数组(实际上应该是const
)。
如果您希望s
与s1
的工作方式类似,则首先需要分配指针数组,这是其他人推荐std::vector
的原因。您可以使用new
自行完成,但必须在某个时刻释放已分配的内存。直接使用new
很容易泄漏。当对象被破坏时,std::vector
将释放其分配的内存。如果你愿意的话,你也可以在你的析构函数中调用delete[]
。
分配了数组后,您需要std::copy
s1
中指针数组s
中的指针数组{{1}}。它不是一个单独的分配操作。