0

配列を初期化する基本的な方法は知っています。コンパイラで int 配列に関するエラーが発生します。コンストラクタで何を初期化すればよいかわかりません。助けが必要です。私のコードは次のとおりです。

Cpp ファイル:

#include <iostream>
using namespace std;
#include "ValidationController.h"

ValidationController::ValidationController() {
    // TODO Auto-generated constructor stub
    monthTable[12]={0,3,3,6,1,4,6,2,5,0,3,5};
}

ValidationController::~ValidationController() {
    // TODO Auto-generated destructor stub
}

およびヘッダー ファイル:

#ifndef VALIDATIONCONTROLLER_H_
#define VALIDATIONCONTROLLER_H_

class ValidationController {
public:
    int monthTable[];//={0,3,3,6,1,4,6,2,5,0,3,5};
    ValidationController();
    virtual ~ValidationController();
};

#endif /* VALIDATIONCONTROLLER_H_ */

私が得るエラーは次のとおりです。

..\src\ValidationController.cpp:13: 警告: 拡張イニシャライザ リストは -std=c++11 または -std=gnu++11 [デフォルトで有効] でのみ使用可能

..\src\ValidationController.cpp:13: エラー: 代入で '' を 'int' に変換できません

私はそれを静的にしたくありません。ヘッダー ファイルへの宣言を保持するソリューションはありますか?または、インポート後に .cpp ファイルで宣言して初期化する必要があります。

4

3 に答える 3

1

コメントで提案されているように、これを静的にして.cppで初期化する必要があります

class ValidationController {
public:
    static int monthTable[];
    ValidationController();
    virtual ~ValidationController();
};

int ValidationController::monthTable[]={0,3,3,6,1,4,6,2,5,0,3,5};

ValidationController::ValidationController()
{
    // TODO Auto-generated constructor stub
}

ValidationController::~ValidationController() {
    // TODO Auto-generated destructor stub
}

int main()
{
    ValidationController v();
    return 0;
}
于 2013-09-24T16:34:52.907 に答える
1

C++11 を使用できる場合は、次のように記述します。ヘッダー ファイル内: #include

class ValidationController {
public:
    std::array<int, 12> monthTable;
    ValidationController();
    virtual ~ValidationController();
};

ソース ファイル内:

ValidationController::ValidationController() 
: monthTable{0,3,3,6,1,4,6,2,5,0,3,5}
{}

または、内容を変更する必要がない場合:

ヘッダー ファイル内:

#include <array>

class ValidationController {
public:
    const static std::array<int, 12> monthTable;
    ValidationController();
    virtual ~ValidationController();
};

ソース ファイル内:

const std::array<int, 12> ValidationController::monthTable = {0,3,3,6,1,4,6,2,5,0,3,5};
于 2013-09-24T16:42:34.883 に答える