没有用于呼叫&的匹配功能没有成员命名

时间:2018-02-10 21:12:01

标签: c++

我遇到两个错误。

关于“output.add(R1.voltage());”的第一个错误line.It给出“没有名为'add'in'std :: __ 1 :: array”的成员

关于调用函数的第二个错误。它给出了“没有匹配函数来调用''”

这是我的标题;

static array<double,1> diodeClipper (array<double,1> input, double Fs){

// 1 ohm is the Ri voltage source resistor
double Ri = 1.0;

// Internal circuit parameters
VoltageSource Vin (0.0, Ri); // initialize voltage at 0V
Resistor R1 (80.0);
Capacitor C1 (3.5e-5, Fs); // Capacitor & Inductor need sampling rate (Fs) in constructor

// create WDF circuit
Serie RC (&R1, &C1);
Serie root (&Vin, &RC);

// accurate simulation of GZ34 valve diode.
double Is = 125.56; // reverse saturation current
double Vt = 0.036;  // thermal voltage

// initial value for the voltage over the diode (n-1 memory)
double Vdiode = 0.0;

// for simulation
double b, r, Rdiode;
array<double,1> output;



// the simulation loop
int n=0; int max=input.size();
for (; n<max; ++n)
{
    Vin.Vs = input[n];                  // read the input signal for the voltage source
    b = root.reflected ();              // get the waves up to the root
    // ** VALVE RESISTOR **
    Rdiode = Is * exp(-Vt * Vdiode);    // the nonlinear resistance of the diode
    r = (Rdiode - root.R)               // update scattering coefficient (KCL)
    / (Rdiode + root.R);
    root.incident (r * b);              // evaluate the wave leaving the diode (root element)
    // ** UPDATE **
    Vdiode = root.voltage ();           // update the diode voltage for next time sample
    output.add (R1.voltage());          // the output is the voltage over the resistor R1

}
return output;}

我的main.cpp

*out1 = diodeClipper(*in1, Fs); //Where i get "No matching..." error
*out2 = diodeClipper(*in2, Fs); //Where i get "No matching..." error

1 个答案:

答案 0 :(得分:0)

&#34;没有名为&#39;添加&#39; std :: __ 1 :: array&#34;:std::array不支持add功能。标准C ++容器的正确推送功能是push_back,即便如此,std::array也不支持它,因为它的大小在编译时是固定的。

没有用于调用的匹配函数:diodeClipperstd::array作为参数,但是您将它传递给double(取消引用C样式数组)。 std::array是一个模板类,与C风格的数组完全不同。