0

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

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

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

4

2 回答 2

2

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

于 2013-11-10T18:42:52.710 回答
1

您应该指定数组的大小,或在声明时对其进行初始化,让编译器推断其大小。

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

还可以考虑使用 C++11std::array代替 C 数组,与裸 C 数组相比,它有很多改进(接口/语法与其他 STL 算法和容器完全兼容/共享)。

于 2013-11-10T18:37:13.307 回答