3

私は小さな .h ファイルを持っています:

#include "stdafx.h"
#ifndef BIGNUM_H
#define BIGNUM_H
#include <vector>

class bignum{

private:
    std::vector<int> num;
    num.resize(4);

};
#endif

次のエラー メッセージが表示されます。

  • 除外された型指定子
  • この宣言にはストレージ クラスまたは型指定子がありません

私は何が欠けていますか?

4

2 に答える 2

11

クラス宣言内のメンバー変数でメソッドを呼び出すことはできません。ベクトルのサイズを 4 に変更したい場合は、クラス コンストラクターで (または別の関数で) 行いますが、コンストラクターはこれを行うのに最適な場所です)。

あなたのcppファイルでは、次のようなことができます:

bignum::bignum() { num.resize(4); }

また:

bignum::bignum(): num(4) {}

2 つ目は、サイズ引数を取るベクトル コンストラクターを呼び出します。または、.h ファイルで直接行うこともできます。

class bignum{
    bignum(): num(4) {} // version 1
    bignum(): num() { num.resize(4); }  // version 2

private:
    std::vector<int> num;
};
于 2013-07-14T18:19:19.093 に答える
4

num.resize(4);関数の外で呼び出すことはできません。クラスのコンストラクター、または宣言の時点で C++11 の初期化を使用できます。

class bignum
{
private:
    std::vector<int> num = std::vector<int>(4); // C++11
};

class bignum
{
    bignum() : num(4) {} // C++03 and C++11
private:
    std::vector<int> num;
};
于 2013-07-14T18:19:47.213 に答える