64,654
社区成员
发帖
与我相关
我的任务
分享
#include <cstdio>
template<class T>
class Base
{
public:
static T t;
};
template<class T>
T Base<T>::t;
class TestClass :public Base<TestClass>
{
public:
TestClass ()
{
printf("run \n");
}
};
int main()
{
void* p = &TestClass::t;
return 0;
}
你要使用它,否则static成员可能被优化掉了
void* p = &TestClass::t;
#include <cstdio>
template<class T>
class Base
{
public:
static T t;
};
template<class T>
T Base<T>::t;
class TestClass :public Base<TestClass>
{
public:
TestClass ()
{
printf("run \n");
}
};
int main()
{
TestClass x;
return 0;
}
#include <cstdio>
template<class T>
class Base
{
public:
static T t;
};
template<class T>
T Base<T>::t;
class TestClass :public Base<TestClass>
{
public:
TestClass ()
{
printf("run \n");
}
};
template class Base<TestClass>; //explicit template Instantiation
int main()
{
return 0;
}
[/quote]
template class Base<TestClass>; //explicit template Instantiation
这一行有没有可能去掉[/quote]
模板的实例化要么隐式(需要使用),要么显示,没有其他。
#include <cstdio>
template<class T>
class Base
{
public:
static T t;
};
template<class T>
T Base<T>::t;
class TestClass :public Base<TestClass>
{
public:
TestClass ()
{
printf("run \n");
}
};
template class Base<TestClass>; //explicit template Instantiation
int main()
{
return 0;
}
[/quote]
template class Base<TestClass>; //explicit template Instantiation
这一行有没有可能去掉#include <cstdio>
template<class T>
class Base
{
public:
static T t;
};
template<class T>
T Base<T>::t;
class TestClass :public Base<TestClass>
{
public:
TestClass ()
{
printf("run \n");
}
};
template class Base<TestClass>; //explicit template Instantiation
int main()
{
return 0;
}