- 主题:[求助] 这个构造函数该怎么写...
想写个阻抗类如下,
class IMPEDANCE {
public:
IMPEDANCE(std::complex<float> z) : _z(z)
{
}
IMPEDANCE(void) : _z(0)
{
}
IMPEDANCE& operator=(const std::complex<float>& z)
{
this->_z = z;
return *this;
}
private:
std::complex<float> _z;
};
目前这几种初始化都正常
IMPEDANCE z1(18 - 45j);
IMPEDANCE z2(0);
IMPEDANCE z3;
z3 = 18 - 45j;
但是写 IMPEDANCE z4 = 18 + 45j; 就会报错,
app.cc:38:23: error: conversion from '__complex__ int' to non-scalar type 'IMPEDANCE' requested
我应该是还漏了什么...
--
FROM 222.129.0.*
右边加上std::complex<float>(18 + 45j)当然就没问题了
不过能少写这几个字更好嘛
【 在 naper 的大作中提到: 】
等式右边先用你第一个构造函数构造下
【 在 tom6bj (tom) 的大作中提到: 】
: 想写个阻抗类如下,
: class IMPEDANCE {
: public:
: IMPEDANCE(std::complex<float> z) : _z(z)
--
FROM 222.129.0.*
不是这个问题吧, 写成IMPENDANCE z = 18.0f + 45.0fj也是不行的
app.cc:41:26: error: conversion from '__complex__ float' to non-scalar type 'IMPEDANCE' requested
模板化试试 @@
【 在 easior 的大作中提到: 】
看起来缺了一个 std::complex<int> 类型的复制构造函数
似乎可以考虑将你的类模板化
【 在 tom6bj 的大作中提到: 】
: 想写个阻抗类如下,
: class IMPEDANCE {
: public:
: ...................
--
FROM 222.129.0.*