无法将字符串数组声明为 class 成员
Cannot declare array of strings as class member
我无法在 class 中声明字符串数组。在我的 class 定义下方:
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;
}
为什么我会收到以下警告/错误?
您正在声明一个大小为 2 的数组,但提供了 3 个字符串!
你有两个问题:第一个是你不能像那样初始化内联数组,你必须使用构造函数初始化列表。第二个问题是您试图用三个个元素初始化一个包含两个元素的数组。
要对其进行初始化,例如
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"}}
{}
};
尝试将元素存储在字符串向量中,在 c++ 中向量使用得更频繁。
class myclass{
public:
int ima,imb,imc;
std::vector<std::string> strings;
myclass() {
strings.push_back("blabla");
}
};
您不能初始化数据成员。
你可以这样写:
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];
};
您可以在构造函数中为数组赋值
我无法在 class 中声明字符串数组。在我的 class 定义下方:
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;
}
为什么我会收到以下警告/错误?
您正在声明一个大小为 2 的数组,但提供了 3 个字符串!
你有两个问题:第一个是你不能像那样初始化内联数组,你必须使用构造函数初始化列表。第二个问题是您试图用三个个元素初始化一个包含两个元素的数组。
要对其进行初始化,例如
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"}}
{}
};
尝试将元素存储在字符串向量中,在 c++ 中向量使用得更频繁。
class myclass{
public:
int ima,imb,imc;
std::vector<std::string> strings;
myclass() {
strings.push_back("blabla");
}
};
您不能初始化数据成员。 你可以这样写:
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];
};
您可以在构造函数中为数组赋值