标题中的C ++数组声明

时间:2013-11-10 18:34:24

标签: c++ arrays class header

我想创建一个类,但我不确定是否在类中正确声明了一个数组。

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

但这似乎不起作用......我想在创建类时初始化数组。有人可以向我解释我做错了什么。谢谢。

2 个答案:

答案 0 :(得分:2)

与Java不同,C ++要求在编译时知道(并声明)数组的大小。如果要使用在编译时未知大小的数组类型变量,则应使用std :: vector。

答案 1 :(得分:1)

您应该指定数组的大小,或者在其声明中初始化它,让编译器推断它的大小。

如果您在声明时不知道数组的大小,则原始数组不是您问题的良好数据结构。如果在运行时已知大小,请使用std::vector。将来,如果容器的大小在运行时已知但不会更改,std::dynarray(从C ++ 14中被丢弃:()将是一个不错的选择。

同样考虑使用C ++ 11 std::array而不是C数组,与裸C数组相比,它有很多改进(A接口/语法与其他STL algortihms和容器完全兼容/共享)。