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 配列の代わりに C++11 を使用することも検討してstd::arrayください。ネイキッド C 配列と比較して、多くの改善点があります (インターフェース/構文は完全に互換性があり、他の STL アルゴリズムやコンテナーと共有されています)。

于 2013-11-10T18:37:13.307 に答える