2011-04-22 8 views
0

申し訳ありませんテンプレートを使い慣れていないので、たくさん検索しましたが、(クラスの)テンプレートのテンプレートを前方に宣言する方法を見つけることができません。 。テンプレートのテンプレートを宣言する方法(クラスの)

ここに私のコード:

#ifndef CMAP_H 
#define CMAP_H 

#include "qvector.h" 

class CMap 
{ 
public: 
    CMap(const unsigned int & width, const unsigned int & height, const unsigned int & hexagonRadius); 
    CMap(const unsigned int & width, const unsigned int & height, const unsigned int & hexagonRadius, const QVector<QVector<unsigned int> > & landType); 
    ~CMap(); 
private: 
    class Pimple; 
    Pimple * d; 
}; 

#endif // CMAP_H

私が欲しいのは、#include "qvector.h" obsolentを作ることです。

+0

なぜあなたは適切なヘッダを含めるようにしたくないですか? –

+0

@James qvector.hが変更されたときに再コンパイルされるファイルの量を制限したいからです。それは貴重な目標です。 –

+0

@quant_dev:OPの以前の投稿に基づいて、 'QVector 'はQtのものです。もしそうなら、頻繁にそれを変更しているわけではありません。 –

答えて

7

これは

template <typename T> class QVector; 

を行いますがon codepadを参照してください:

#ifndef CMAP_H 
#define CMAP_H 

template <typename T> class QVector; 

class CMap 
{ 
public: 
    CMap(const unsigned int & width, const unsigned int & height, const unsigned int & hexagonRadius); 
    CMap(const unsigned int & width, const unsigned int & height, const unsigned int & hexagonRadius, const QVector<QVector<unsigned int> > & landType); 
    ~CMap(); 
private: 
    class Pimple; 
    Pimple * d; 
}; 

#endif // CMAP_H