トップページ > プログラム > 2016年06月14日 > 5mj4vfHf

書き込み順位&時間帯一覧

21 位/187 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000002100000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net
292 :デフォルトの名無しさん[]:2016/06/14(火) 15:21:10.15 ID:5mj4vfHf
コンテナクラスのアクセスの仕方について誰か教えてほしいです。
こんな感じのプログラムを書いてるのですが、

class TEST {
public:
vector<int> a[32];

TEST() : a() {};
};

TEST test;
auto itr = test.a.begin()

最後の行のイテレーター定義部分で、「式にはクラス型が必要です」とのエラーが出てしまいます。
ただ、この行を、

auto itr = test.a->begin()

と変えるとエラーが消えて正常に(?)定義ができます。
これが何故なのかさっぱりわかりません・・・。
vectorのメンバ関数って別に普通にドット演算子でアクセスできますよね?
なんで急にポインタを参照するためのアロー演算子が出てくるのでしょうか・・・。
【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net
297 :デフォルトの名無しさん[sage]:2016/06/14(火) 15:52:25.05 ID:5mj4vfHf
>>293
>>295
なるほど・・・ありがとうございました。

vector<int> a[32];は、メンバイニシャライザでvectorの初期化をできないかと色々調べつつやってて、出来たモノでした・・・。

となると、クラス宣言部分で、メンバ関数Vectorの要素数を決めつつ、初期化って事は不可能ってことなになるのかな?
配列ならできるのにorz

大人しくコンストラクタ内で、必要な数だけpush_back() でもするのが普通の使い方なのかな・・・。
【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net
299 :デフォルトの名無しさん[sage]:2016/06/14(火) 16:36:54.70 ID:5mj4vfHf
>>298
vector<int> (32)って書き方があったのですね・・・。

public:
 vector<int> a(32);

ってやり方最初に試してエラーでるから、メンバ変数では要素数指定は使えないものだと勝手に思い込んでました。
コンパイラも対応してるみたいですので、これでやってみます。

(この状態で要素の値をを見ると、何故かちゃんと0になってる(初期化されてる?)のですが、これはコンテナクラスの仕様かな?
これはコンテナクラスについて、勉強して調べて置きます・・・)

ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。