4

Aと呼ばれるパブリックメソッドを持つクラスがあるとしましょうinit()std::vectorタイプ のオブジェクトを作成するとA、すべてのオブジェクトに対してこのメ​​ソッドを簡単に呼び出すことができます。

std::vector<A> v;

/* filling vector with some objects */

v[1].init();   // Intellisense finds that v[1] object has method 'init()'

しかし、typedef を使用すると、そのメソッドにアクセスできません。

typedef std::vector<A> a_vector;

a_vector v;

/* filling vector with some objects */

v[1].   // Intellisense says that v[1] object doesn't have any members available

typedefの使用がそのような動作を引き起こしているのはなぜですか?

4

1 に答える 1

3

おそらく、VS2012 のキャッシュ シンボル定義ファイルの単なる不具合です。ソリューションを閉じ、ソリューション ディレクトリにある sdf ファイル ([SolutionName].sdf という名前) を削除して、ソリューションを再度開きます。シンボル キャッシュが再構築されるまで数分待ち (プロジェクトのサイズによって異なります)、最善の結果が得られることを願っています。何か問題が発生するたびに、洗い流して繰り返します (特に、大量のコードを含むソリューションの場合はそうです)。

于 2013-02-14T12:23:52.570 に答える