2011-11-10 52 views
1

私はあなた#include <vector>エラーC2036:「エージェント*ののconst」:不明サイズ「ベクトル」クラスの

私はそれだけで得るときあなたがアクセスしたクラス、のように、vectorクラスで発生したエラーを取得しています一度、それが発生してしまうなぜ私は手掛かりを持っていない:

error C2036: 'Agent *const ' : unknown size

これはまた、ベクターに発生している、とエラーが発生したコードはここにある:

size_type size() const 
{ // return length of sequence 
    return (this->_Mylast - this->_Myfirst); // error on this line 
} 
+3

ベクターの宣言は何ですか? – slaphappy

+0

あなたはどうやってベクトルクラスを使っていますか? – Pepe

答えて

15

これはそれを意味そのタイプAgentは、この時点で完全には分かっていません。あなたはおそらくそれを前方宣言しているだけですが、この時点では定義を見ることはできません。

コードの展示の以下の部分、このエラー:

#include <vector> 
class Agent; 
static int getSize(std::vector<Agent> const& v) { 
    return v.size(); 
} 

あなたが必要なものは、あなたがstd::vector<Agent>を使用する前Agentクラスを定義するファイルを含めることです。このファイルの名前はおそらくAgent.hです。

エラーの理由は、コードの行で指し示しているため、コンパイラは2つのAgent const*の差異を計算しようとします。これは、char const*にキャストされたポインタの差をsizeof(Agent)で割った値とほぼ同じです。ただし、このサイズは、型が完全に定義されていないかどうかはわかりません。

+2

+1ここでの読み方の魔法の帽子のために+1 – PlasmaHH

+0

標準では、「不完全な型のテンプレートをインスタンス化することは未定義の振る舞いです」:-) –

+0

ファイルのヘッダーで前方宣言で十分ですか?関数は存在するか?あるいは、関数の宣言もAgent.hを見ることができなければなりません – SirYakalot

関連する問題