c++类模板化(使用默认值)
c++ class templating ( with defaults )
我正在尝试这样做。但无法找出正确的语法。。如有任何帮助,将不胜感激
template <typename T, typename K = UINT32>
class info
{
K* asArray();
}
template <typename T, typename K = UINT32>
K* info<T, UINT32>:: asArray() { // return a int array };
template <typename T, char>
char* info<T, char>:: asArray() { // return a char array };
这就是您所需要的全部内容-将定义放入类模板中。
template <typename T, typename K = int>
class info {
K* asArray(){ return 0; }
};
通过例如,可以单独对班级成员进行专业化
template<>
char* info<int,char>::asArray(){ return new char[10]; }
这覆盖了类模板中的基本定义:
info<int,char> iv;
char* iptr = iv.asArray();
if( iptr != 0 ) std::cout << "ok - not null" << std::endl;
显示ok - not null
。
不能只对成员函数进行部分专门化。您必须创建类本身的专门化。
template <typename T>
class info<T, char>
{
char* asArray();
};
然后,您可以使用:
template <typename T>
char* info<T, char> asArray { // return a char array }
这是不允许的:
template <typename T, typename K = UINT32>
K* info<T, UINT32>:: asArray() { // return a int array };
你必须使用:
template <typename T, typename K>
K* info<T, K>:: asArray() { // return a K array };
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 具有默认值的引用获取函数
- 当给定默认值时,为什么此模板参数推导失败
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 格式化浮点值:返回默认值
- 如何将数组部分初始化为某个默认值?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 创建一个包含 c++ 默认值的环境文件
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- Switch 语句(字符串)一直选择默认值,除非其为零
- 如何使用默认值将枚举声明为 extern
- 如何在提升程序选项中设置矢量<矢量>的默认值<string>
- 如何使用默认值为构造函数中的枚举赋值?
- 变量始终在函数中重置为默认值
- 如何在C++中提供模板化函数作为另一个函数的参数,默认值?
- 函数不返回默认值
- 具有公共范围与专用范围的默认值的C++的不同行为
- 在 c++ 中,如果我创建一个接受一个具有默认值的参数的构造函数 - 它会用作默认(空)构造函数吗?
- 实例化时结构字段中的默认值