在 Xcode 工作在 Mac OS X Leopard在 C++ 中:
我有以下代码:
class Foo{
private:
string bars[];
public:
Foo(string initial_bars[]){
bars = initial_bars;
}
}
它不编译并抛出以下错误:
error: incompatible types in assignment of 'std::string*' to 'std::string [0u]'
我注意到删除行 bars = initial_bars;
解决了问题。
看来我没有正确完成作业。我该如何解决这个问题?
编辑:
变量 bars 是一个字符串数组。在主函数中,我像这样初始化它:
string bars[] = {"bar1", "bar2", "bar3"};
但它可以包含任意数量的成员。
最佳答案
数组的行为类似于 const 指针,您不能为它们分配指针。您也不能直接将数组分配给彼此。
你要么
- 使用指针成员变量
- 有一个固定大小的
bar
你得到并用它的内容初始化你的成员数组 - 只需使用对
std
容器的引用,例如std::vector
关于c++ - 如何在类构造函数中初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1469033/