Working in Xcode on Mac OS X Leopard in 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;就解决了这个问题。看起来我没有把作业做对。我该如何着手解决这个问题呢?
编辑:
变量bar是一个字符串数组。在main函数中,我像这样初始化它:
string bars[] = {"bar1", "bar2", "bar3"};但它可以包含任意数量的成员。
发布于 2009-09-24 09:13:54
可以“值初始化”数组成员,如下所示:
class A {
public:
A ()
: m_array () // Initializes all members to '0' in this case
{
}
private:
int m_array[10];
};对于POD类型,这一点很重要,因为如果您没有在成员初始化列表中列出'm_array‘,那么数组元素将具有不确定的值。
一般来说,最好在成员初始化列表中初始化成员,否则成员会被初始化两次:
A (std::vector<int> const & v)
// : m_v () // 'm_v' is implicitly initialized here
{
m_v = v; // 'm_v' now assigned to again
}更高效地写成:
A (std::vector<int> const & v)
: m_v (v)
{
}https://stackoverflow.com/questions/1469033
复制相似问题