有人能帮我解决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;
}
发布于 2019-11-27 10:43:22
https://stackoverflow.com/questions/59068266
复制相似问题