09/01/07 01:43:30
>>842
できました。ありがとうございます。
844:デフォルトの名無しさん
09/01/07 10:19:30
質問です( VC++ 2008EE )
クラステンプレート使用時、staticなconstメンバ変数の定義でエラーになってしまいます。
<ヘッダー>
template <typename T>
class samp{
private:
T number;
static const double db;
public:
...
void disp() const { std::cout << "db = " << db << std::endl; }
};
<cpp>
template <typename T>
const double samp<T>::db = 1.35;
このクラスのオブジェクトを生成して disp() をコールすると
db の外部参照が未解決と出てしまいます。
どう修正すべきでしょうか?
845:デフォルトの名無しさん
09/01/07 10:29:20
定義が無いもの、定義書けばいいだろ
846:デフォルトの名無しさん
09/01/07 10:43:00
VS2008で問題出ないけどなあ、それ。
847:844
09/01/07 11:00:00
>>845
<cpp>での定義の事でしょうか?
const double samp<int>::db = 1.35;
const double samp<char>::db = 1.35;
とかやれば通るんですがテンプレートの意味ないですよね・・・
>>846
マジですか?!
クラスの宣言と定義だけなら通るんですが、main にて
samp<int> smp;
smp.disp(); // ここでエラー
になってしまいます