我试图创建程序,只有当模板被实例化时(它将用于低级驱动程序初始化)才会执行一些代码。 现在我有以下解决方案。强制模板静态成员实例
class Initializer
{
public:
Initializer(){
// This code is executed once
}
void silly() const{
}
};
template <class T>
class Proxy{
protected:
static const Initializer init;
};
template<class T>
const Initializer Proxy<T>::init;
template<class T>
class MyTemplate : public Proxy<void>{
public:
static void myMethod1(){
init.silly();
// ... Something useful
}
static void myMethod2(){
init.silly();
// ... Something useful
}
};
的Initializer
默认的构造函数只有在情况下,我打电话myMethod1()
或myMethod2()
某处被执行。
但是有没有办法摆脱那些init.silly();
行?
“强制实例化:”和“检查实例化”是两个完全不同的事情。 –
你是否想为'Proxy'的每个实例创建'Initializer'?例如。如果你创建'Proxy'和'Proxy ',那么'Initializer'会被构造两次? –
Pavel
不,我只想创建一个'Initializer'实例。我将永远继承'代理'。 –
valentin