使用IBM Rational Rhapsody的显式成员专门化
Explicit member specialization using IBM Rational Rhapsody
我想使用IBM Rational Rhapsody显式专门化类中的一些成员函数。
我到目前为止所做的;我在一个普通类中创建了一个函数,并将其标记为模板。标记CG::生成到规格。这将是模板的原型。
然后创建另一个函数。将其标记为模板。将我上面创建的函数指向模板参数下的主模板。了实现。下面是Rhapsody生成的代码:
//## class MyConvert
class MyConvert {
//// Constructors and destructors ////
public :
MyConvert();
~MyConvert();
//// Operations ////
//## operation strtox(char*,char*)
template <typename T> inline static T strtox(char* in, char** end);
//## operation strtox(char*,char**)
template <> inline double strtox<double>(char* in, char** end) {
//#[ operation strtox(char*,char**)
return strtod(in, end);
//#]
}
};
当我编译这个时,我得到这个:error: explicit specialization in non-namespace scope 'class MyConvert'
显式特化应该在类定义之外实现,像这样:
//## class MyConvert
class MyConvert {
//// Constructors and destructors ////
public :
MyConvert();
~MyConvert();
//// Operations ////
//## operation strtox(char*,char*)
template <typename T> inline static T strtox(char* in, char** end);
};
//## operation strtox(char*,char**)
template <> inline double MyConvert::strtox<double>(char* in, char** end) {
//#[ operation strtox(char*,char**)
return strtod(in, end);
//#]
}
如何使用Rhapsody实现这一点?
这不是确切的答案,而是具有专门功能的解决方案。当然,它确实奏效了。
在包中定义函数,而不是在类中定义函数。这样,实现将在类作用域之外。类成员函数仍然可以访问包内定义的函数。
我在我的博客上发表了详细的解释。如有兴趣:http://kaskavalci.com/?p=323
相关文章:
- 如何基于模板化类的基类专门化成员函数
- 根据成员容器的尺寸,专门化成员功能
- 专门化一个成员函数,而不是整个类
- c++多参数模板化的类成员专门化
- C++ : 如何为模板类 A 专门化成员函数来处理类似数组的类 A<T>< >?
- 使用已推导的模板参数专门化模板成员函数
- C++专门化成员功能
- 根据类成员的存在/不存在专门化C++模板
- 如何根据类的模板参数专门化模板成员函数?
- 如何为具有位字段成员的类专门化“swap”
- 成员和成员函数的模糊部分模板专门化
- C++中模板类的成员函数的专门化
- 专门化模板成员函数来处理std::string和char[]参数
- 如何专门化此模板成员函数
- C++-专门化Template类的成员函数
- 专门化模板成员函数
- 可变模板成员函数的部分专门化
- 类型组模板化类的成员专门化
- 部分成员专门化
- 使用IBM Rational Rhapsody的显式成员专门化