允许类分配为零
Allow class to be assigned as zero
我正在编写一个模板函数,我想初始化一个模板变量为零。我在考虑设置等于零的变量,然后让类类型定义其自己的"零"的定义:
T data = 0;
我尝试超载分配运算符:
class Example{
public:
int data;
Example(){}
Example& operator=(int v){
data = v;
return *this;
}
};
template <class T> T test(){
T data = 0;
return data;
}
int main(int argc, char** argv){
double v1 = test<double>();
Example v2 = test<Example>();
return 1;
}
...但是编译器给了我"错误:从'int'转换为非标准类型..."。我该如何完成这项工作?还是有更好的方法来做我想做的事?
您的代码问题是T data = 0;
实际上调用构造函数,而不是operator=
。因此,为了正常工作,您需要声明接受int
的构造函数。
您应该注意使您的类可分配给0
。您应该使用支撑初始化:
template <class T> T test(){
T data{};
return data;
}
它将正确构造任何默认构造类型,并将零初始化内置类型,例如double
或int
。
相关文章:
- 堆栈分配的类类型.为什么两个 ID 实例的地址相同?
- 分配抽象类类型 c++ xcode 的对象
- 使用类中的方法作为运算符将值分配给类的私有成员
- 如何根据基类对象中的变量值分配派生类中的变量?
- 分配抽象类类型为"CObject"的对象
- 动态分配时类构造函数中的堆损坏
- 指向未由对象地址初始化的对象的指针如何将值分配给类的数据成员
- 多维数组作为要在堆上分配的类成员
- 对内存动态分配的类不使用"*"的逻辑
- 将指针作为参数分配给类变量,然后使用它抛出读取访问违规
- AVX2:分配给类成员时出现分段错误__m256i
- C++从 csv 文件中读取,然后将数据分配给类成员
- 将局部方法变量分配给类指针
- 移动构造函数和移动分配. 基类中的运算符
- 值不会分配给类中的变量
- 我想从文本文件中获取信息并将该信息分配给类对象
- 将值分配给类的私人成员变量
- 动态内存分配与类私有成员C++的 std::vector
- 无法在重载运算符时将数组元素分配给类变量"="
- 如何处理动态分配的类