不能将字符串数组声明为类成员

时间:2015-12-05 15:41:58

标签: c++ string declaration

我无法在班上声明一个字符串数组。在我的班级定义下面:

class myclass{

    public:
        int ima,imb,imc;
        string luci_semaf[2]={"Rosso","Giallo","Verde"};
  };

和我的主文件

#include <iostream>
#include <fstream> 
#include "string.h"
#include <string>
using namespace std;
#include "mylib.h"
int main() {

    return 0;
}

为什么会收到以下警告/错误?

enter image description here

4 个答案:

答案 0 :(得分:5)

你有两个问题:首先是你无法像这样初始化内联数组,你必须使用构造函数初始化列表。第二个问题是您尝试使用三个元素初始化两个元素的数组。

要初始化它,例如。

class myclass{
public:
    int ima,imb,imc;
    std::array<std::string, 3> luci_semaf;
    // Without C++11 support needed for `std::array`, use
    // std::string luci_semaf[3];
    // If the size might change during runtime use `std::vector` instead

    myclass()
        : ima(0), imb(0), imc(0), luci_semaf{{"Rosso","Giallo","Verde"}}
    {}
};

答案 1 :(得分:3)

您无法初始化数据成员。 你可以这样写:

class myclass{
   public:
       myclass() {
            luci_semaf[0] = "Rosso";
            luci_semaf[1] = "Giallo";
            luci_semaf[2] = "Verde";
       }
   private:
       int ima,imb,imc;
       string luci_semaf[3];
 };

您可以在Сonstructor

中指定数组的值

答案 2 :(得分:1)

您声明了一个大小为2的数组,但提供了3个字符串!

答案 3 :(得分:1)

尝试将元素存储在字符串向量中,在c ++向量中使用更频繁。

class myclass{

    public:
        int ima,imb,imc;
        std::vector<std::string> strings;
        myclass() {
           strings.push_back("blabla");
        }
  };