c++ - 如何在类构造函数中初始化数组?

标签 c++ oop

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/

相关文章:

c++ - 如何访问前向声明类的成员

php - 函数 Db::__construct() 的参数太少,传入 0

c++ - 如何填充给定平面内的 OpenVDB 体素?

C++ - SDL 不工作

java - 驱动类(Main class)是关联、聚合还是组合?

php - 使用现有 ISBN 和 PHP 的书籍封面

c++ - 如何在虚方法上使用模板参数类?

c++ - 如何对 Mat 的单个坐标使用 warpPerspective

c++ - 修复 LNK2019 : unresolved external symbol with freeglut

c# - 从 C++ 编码到 C# 时 CLR 崩溃