我想创建一个类,但我不确定是否在类中正确声明了一个数组。
my header file
#ifndef SOMECLASS_H
#define SOMECLASS_H
#include <string>
class MyClass {
public:
MyClass();
~MyClass();
private:
std:string myStringArray[];
int myIntegerArray[];
};
#endif SOMECLASS_H
我的班级文件
#include "someClass.h"
MyClass::MyClass() {
std::string myStringArray[] = {"Option1","Option2",
"Option3","Option4"};
int myIntegerArray[] = {1,2,3,4};
}
但这似乎不起作用......我想在创建类时初始化数组。有人可以向我解释我做错了什么。谢谢。
答案 0 :(得分:2)
与Java不同,C ++要求在编译时知道(并声明)数组的大小。如果要使用在编译时未知大小的数组类型变量,则应使用std :: vector。
答案 1 :(得分:1)
您应该指定数组的大小,或者在其声明中初始化它,让编译器推断它的大小。
如果您在声明时不知道数组的大小,则原始数组不是您问题的良好数据结构。如果在运行时已知大小,请使用std::vector
。将来,如果容器的大小在运行时已知但不会更改,std::dynarray
(从C ++ 14中被丢弃:()将是一个不错的选择。
同样考虑使用C ++ 11 std::array
而不是C数组,与裸C数组相比,它有很多改进(A接口/语法与其他STL algortihms和容器完全兼容/共享)。