我遇到两个错误。
关于“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
答案 0 :(得分:0)
&#34;没有名为&#39;添加&#39; std :: __ 1 :: array&#34;:std::array
不支持add
功能。标准C ++容器的正确推送功能是push_back
,即便如此,std::array
也不支持它,因为它的大小在编译时是固定的。
没有用于调用的匹配函数:diodeClipper
将std::array
作为参数,但是您将它传递给double(取消引用C样式数组)。 std::array
是一个模板类,与C风格的数组完全不同。