C++ 模板C++;使用默认模板参数初始化
我有一个通用类模板MyClass,并希望根据enType值进行专门化impl。问题是使用基于enType值的ServiceCreate的正确语法是什么C++ 模板C++;使用默认模板参数初始化,c++,templates,default,C++,Templates,Default,我有一个通用类模板MyClass,并希望根据enType值进行专门化impl。问题是使用基于enType值的ServiceCreate的正确语法是什么 template <enum enType, typename ServiceCreator = CServiceFactory<enum enType>> class MyClass { public: MyClass(const Configuration& cfg) {} public: b
template <enum enType, typename ServiceCreator = CServiceFactory<enum enType>>
class MyClass
{
public:
MyClass(const Configuration& cfg) {}
public:
bool init() { return false; }
bool start() { throwException(); }
void stop() { throwException(); }
private:
void throwException() const { THROW(Exception, "invalid/unsupported mode"); }
};
// I need a specialization impl, so which one of the following 3 possible ways? or all are wrong?
template <typename ServiceCreator>
class MyClass<enType::eCase1>
{
public:
MyClass(const CConfiguration& cfg) {
ServiceCreator(cfg); // it will create something for me by using CServiceFactory<eCase1>
}
};
template <>
class MyClass<enType::eCase1>
{
public:
MyClass(const CConfiguration& cfg) {
ServiceCreator(cfg); // it will create something for me by using CServiceFactory<eCase1>
}
};
template <>
class MyClass<enType::eCase1, ServiceCreator<enType::eCase1>
{
public:
MyClass(const CConfiguration& cfg) {
ServiceCreator(cfg); // it will create something for me by using CServiceFactory<eCase1>
}
};
模板
类MyClass
{
公众:
MyClass(const配置&cfg){}
公众:
bool init(){return false;}
bool start(){throweexception();}
void stop(){throweexception();}
私人:
void throwException()常量{THROW(异常,“无效/不支持的模式”);}
};
//我需要一个专门化impl,那么以下三种可能的方法中的哪一种?还是一切都错了?
模板
类MyClass
{
公众:
MyClass(常量配置和cfg){
ServiceCreator(cfg);//它将使用CServiceFactory为我创建一些东西
}
};
模板
类MyClass
{
公众:
MyClass(常量配置和cfg){
ServiceCreator(cfg);//它将使用CServiceFactory为我创建一些东西
}
};
模板
班级我的班级那是什么?希望我能尽快打勾。