2011-10-18 17 views
0

これは間違いなく簡単です。私は数年間C++を使い果たしているので、なぜこれがコンパイルされないのかを理解するためには助けが必要です。シンプルなC++ベクトル/ポインタガフ

私は 'PointList'と呼ばれるクラスを持っています。私は、次のしている、.cppファイルで

public: 
    PointList(); 

private: 
    std::vector< Point* > *pl; 

PointList::PointList() 
{ 
    pl = new vector< Point* >(); 
} 

これはコンパイルされませんヘッダーファイルでは、私は以下のものを持っています。

期待タイプ指定子
が期待割り当て
に '< *のstd ::ベクトル' から 'int型*' に変換できません 'ベクトル' の前に ';' before 'vector'

何が得られますか?

+4

を見てみましょう**のstd :: **またベクトル –

+0

、あなたはしばらくの間、C++の外にしてきた場合生ポインタの代わりにshared_ptrを使用することを検討したいかもしれません。人々はこれに関して異なる意見を持っている:p。 – Robinson

+0

私はスマートな指針に反対し、まだ彼が何を話しているか知っている人は見ていません。 – sly

答えて

3

あなたはusing宣言を使用していますか?あなたのcppファイルにnamespace std::

+0

これよりずっと簡単なことはありません。ありがとうございました。私が9分で許可されたら、これを受け入れる。 –

0

vectorをプレフィックスする必要がなければあなたは、ベクターを修飾名前空間する必要があります。

PointList::PointList() 
{ 
    pl = new std::vector< Point* >(); 
} 

そして、C++でのポインタを乱用しないでください。おそらくメンバplはポインタである必要はありません。

あなたはポリモーフィック型の(ベクトル、リスト、など)の収集が必要な場合は、Boost.PointerContainer

関連する問題