テンプレートクラスの明示的インスタンス化について質問です。
Posted: 2009年10月22日(木) 19:11
こんばんは。
テンプレートクラスでも宣言はヘッダファイルに、定義はソースファイルに書きたかったので
明示的インスタンス化で解決しようとしたのですが、
『明示的なテンプレートのインスタンス生成要求に対して適切な定義がありません。』
という警告が出てしまいます。
自分で調べたり検索したりしたのですが、どうすれば解決できるのかわかりませんでした。
template.hが下記の内容で、template.cppは省略しますがCBase_tクラスのメンバ関数の定義を行っています。
template<class T> class CBase_t
{
private:
    T* m_pValue;
public:
    CBase_t();
    T set(T value);
    T calc(T value);
    T get(void);
    ~CBase_t();
};
template class CBase_t<int>;    //ここの2行で警告が出ています
template class CBase_t<short>;
警告を無視しても一応想定通りの結果にはなりました。
しかし他にどのような影響があるのかわからない(私が理解できていない)事と、
警告を出しつつ無視していると、他の重大な警告を見落としかねないので
警告の出ない完璧な記述にしたいのです。
どのようにすればよいのでしょうか?
お願いいたします。
テンプレートクラスでも宣言はヘッダファイルに、定義はソースファイルに書きたかったので
明示的インスタンス化で解決しようとしたのですが、
『明示的なテンプレートのインスタンス生成要求に対して適切な定義がありません。』
という警告が出てしまいます。
自分で調べたり検索したりしたのですが、どうすれば解決できるのかわかりませんでした。
template.hが下記の内容で、template.cppは省略しますがCBase_tクラスのメンバ関数の定義を行っています。
template<class T> class CBase_t
{
private:
    T* m_pValue;
public:
    CBase_t();
    T set(T value);
    T calc(T value);
    T get(void);
    ~CBase_t();
};
template class CBase_t<int>;    //ここの2行で警告が出ています
template class CBase_t<short>;
警告を無視しても一応想定通りの結果にはなりました。
しかし他にどのような影響があるのかわからない(私が理解できていない)事と、
警告を出しつつ無視していると、他の重大な警告を見落としかねないので
警告の出ない完璧な記述にしたいのです。
どのようにすればよいのでしょうか?
お願いいたします。