Phoenix
Phoenix

Reputation: 487

Cannot declare array of strings as class member

I could not declare an array of strings in my class. Below my class definition:

class myclass{

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

and my main file

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

    return 0;
}

Why do I get the following warnings / error?

enter image description here

Upvotes: 3

Views: 4728

Answers (4)

Evgeniy331
Evgeniy331

Reputation: 414

You can not initialize data member. You can write like this:

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];
 };

You can assign the values of the array in the Сonstructor

Upvotes: 5

C. Merabi Shmulik
C. Merabi Shmulik

Reputation: 282

Try storing the elements in vector of strings, in c++ vectors are used more often.

class myclass{

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

Upvotes: 1

Some programmer dude
Some programmer dude

Reputation: 409176

You have two problems: The first is that you can't initialize the array inline like that, you have to use a constructor initializer list. The second problem is that you attempt to initialize an array of two elements with three elements.

To initialize it do e.g.

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"}}
    {}
};

Upvotes: 6

Aaditya Kalsi
Aaditya Kalsi

Reputation: 1049

You're declaring an array of size 2 but providing 3 strings!

Upvotes: 1

Related Questions