[英]C++ template class static members initialization
可以請有人幫助我解決C ++中的一個奇怪問題。 我想在模板類中有一個靜態成員。 該靜態成員是另一個類,我必須以某種方式對其進行初始化。 我不知道在哪里以及如何初始化該類。 我舉了一個小例子來說明我遇到的問題。 該示例確實可以編譯,但不會鏈接,因為顯然找不到靜態成員。 我哪里做錯了? 我在哪里可以初始化靜態成員。 靜態成員不是一個簡單的變量,我只能在其中分配一個值。 在我的程序中,我必須調用更多函數才能初始化靜態成員。
#include <iostream>
template<typename T1, typename T2>
class TemplateClass
{
protected:
T1 t1;
static T2 t2;
public:
TemplateClass ();
};
template<typename T1, typename T2>
TemplateClass<T1, T2>::TemplateClass ()
{
TemplateClass<T1, T2>::t2.initialize (10);
}
class T1Sample
{
private:
int i;
public:
T1Sample () : i (1) {};
int get_i () { return i; };
};
class T2Sample
{
private:
int i;
public:
T2Sample () : i (0) {};
void initialize (int x) { i = x; };
int get_i () { return i; };
};
class DerivedClass : TemplateClass<T1Sample, T2Sample>
{
private:
int z;
public:
DerivedClass () { z = t1.get_i () + TemplateClass<T1Sample, T2Sample>::t2.get_i (); };
int get_z () { return z; };
};
int main ()
{
DerivedClass d;
std::cout << d.get_z () << std::endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.