Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的嵌套函数+; 我希望在C++中使用嵌套函数,以避免全局变量。我发现了一种通过使用类()来实现这一点的方法。我试图实现那个解决方案,但失败了。这是我的密码: class Myclass { double (*retval)(double, double); double A; double x0, y0, z0, z, a, b,k; int mu, nu, s, t; double g(double x, double y) { return (x0+y0+z0+a+b+k+s+t+mu+nu)*A*x*y; } public : Myclass(complex<double> A, double x0, double y0, double z0, double k, double a, double b, int mu, int nu, int s, int t) : z(0.) { this->A=A; this->x0=x0; this->y0=y0; this->z0=z0; this->k=k; this->a=a; this->b=b; this->mu=mu; this->nu=nu; this->s=s; this->t=t; retval=g; } operator double (double, double) { return retval; } }; int main () { /* .... */ return 0; } class-Myclass { 双人(*返回)(双人,双人); 双A; 双x0,y0,z0,z,a,b,k; int mu、nu、s、t; 双g(双x,双y) { 返回(x0+y0+z0+a+b+k+s+t+mu+nu)*a*x*y; } 公众: Myclass(复数A,双x0,双y0,双z0,双k,双A,双b,int mu,int nu,int s,int t):z(0。) { 这->A=A; 这->x0=x0; 这->y0=y0; 这->z0=z0; 这个->k=k; 这->a=a; 这->b=b; 这个->μ=μ; 这->nu=nu; 这->s=s; 这个->t=t; retval=g; } 操作员双(双,双) { 返回返回; } }; int main() { /* .... */ 返回0; }_C++_C++11 - Fatal编程技术网

C+中的嵌套函数+; 我希望在C++中使用嵌套函数,以避免全局变量。我发现了一种通过使用类()来实现这一点的方法。我试图实现那个解决方案,但失败了。这是我的密码: class Myclass { double (*retval)(double, double); double A; double x0, y0, z0, z, a, b,k; int mu, nu, s, t; double g(double x, double y) { return (x0+y0+z0+a+b+k+s+t+mu+nu)*A*x*y; } public : Myclass(complex<double> A, double x0, double y0, double z0, double k, double a, double b, int mu, int nu, int s, int t) : z(0.) { this->A=A; this->x0=x0; this->y0=y0; this->z0=z0; this->k=k; this->a=a; this->b=b; this->mu=mu; this->nu=nu; this->s=s; this->t=t; retval=g; } operator double (double, double) { return retval; } }; int main () { /* .... */ return 0; } class-Myclass { 双人(*返回)(双人,双人); 双A; 双x0,y0,z0,z,a,b,k; int mu、nu、s、t; 双g(双x,双y) { 返回(x0+y0+z0+a+b+k+s+t+mu+nu)*a*x*y; } 公众: Myclass(复数A,双x0,双y0,双z0,双k,双A,双b,int mu,int nu,int s,int t):z(0。) { 这->A=A; 这->x0=x0; 这->y0=y0; 这->z0=z0; 这个->k=k; 这->a=a; 这->b=b; 这个->μ=μ; 这->nu=nu; 这->s=s; 这个->t=t; retval=g; } 操作员双(双,双) { 返回返回; } }; int main() { /* .... */ 返回0; }

C+中的嵌套函数+; 我希望在C++中使用嵌套函数,以避免全局变量。我发现了一种通过使用类()来实现这一点的方法。我试图实现那个解决方案,但失败了。这是我的密码: class Myclass { double (*retval)(double, double); double A; double x0, y0, z0, z, a, b,k; int mu, nu, s, t; double g(double x, double y) { return (x0+y0+z0+a+b+k+s+t+mu+nu)*A*x*y; } public : Myclass(complex<double> A, double x0, double y0, double z0, double k, double a, double b, int mu, int nu, int s, int t) : z(0.) { this->A=A; this->x0=x0; this->y0=y0; this->z0=z0; this->k=k; this->a=a; this->b=b; this->mu=mu; this->nu=nu; this->s=s; this->t=t; retval=g; } operator double (double, double) { return retval; } }; int main () { /* .... */ return 0; } class-Myclass { 双人(*返回)(双人,双人); 双A; 双x0,y0,z0,z,a,b,k; int mu、nu、s、t; 双g(双x,双y) { 返回(x0+y0+z0+a+b+k+s+t+mu+nu)*a*x*y; } 公众: Myclass(复数A,双x0,双y0,双z0,双k,双A,双b,int mu,int nu,int s,int t):z(0。) { 这->A=A; 这->x0=x0; 这->y0=y0; 这->z0=z0; 这个->k=k; 这->a=a; 这->b=b; 这个->μ=μ; 这->nu=nu; 这->s=s; 这个->t=t; retval=g; } 操作员双(双,双) { 返回返回; } }; int main() { /* .... */ 返回0; },c++,c++11,C++,C++11,目标是使用原型double(double,double)返回一个函数,其他指令将使用该函数 我收到了以下错误消息: g++-c-g-MMD-MP-MF“build/Debug/GNU-Linux-x86/main.o.d”-o build/Debug/GNU-Linux-x86/main.o main.cpp main.cpp:114:36:错误:“Myclass::运算符double(double,double)”必须接受“void”运算符double(double,double) ^ mai

目标是使用原型double(double,double)返回一个函数,其他指令将使用该函数

我收到了以下错误消息:

g++-c-g-MMD-MP-MF“build/Debug/GNU-Linux-x86/main.o.d”-o build/Debug/GNU-Linux-x86/main.o main.cpp
main.cpp:114:36:错误:“Myclass::运算符double(double,double)”必须接受“void”运算符double(double,double)
^
main.cpp:在构造函数“Myclass::My_class(std::complex,double,double,double,double,double,int,int,int)”中:
main.cpp:112:15:错误:无法将“Myclass::g”从类型“double(champ_speculaire_class::)(double,double)”转换为类型“double(*)(double,double)’retval=g;
^
目标是使用原型double(double,double)返回函数

声明,而不是返回函数的函数

若要返回函数,并且由于您已将问题标记为,我建议使用:


你的意思是所谓的递归,术语“嵌套函数”非常令人恼火。编译器仍然声明istruction this->retval=g;作为一个错误,OP只是想要函数的递归,而不是返回一个函数(指针);作为一个错误。请问如何避免此错误?
g
不是一个正常的
double(double,double)
函数,它是一个成员函数。如果您想将
retval
声明为
double(Myclass::*retval)(double,double)我的目标是在另一个具有双(double,double)参数的函数中使用函数g。是否可以将所有属性设置为静态,以避免出现“this”指针?我试过了,我成功地编译了。我仍然不知道它是否正确@user5396848 A
double(*)(double,double)
无法保持“我正在调用哪个函数”之外的任何状态。指向类的指针是state,其他数据也是state。另一个需要
double(*)(double,double)
的函数是什么?为什么它有这个接口?
operator double (double, double)
std::function<double(double, double)> get() const
{
    return retval;
}
double (*get())(double, double) const
{
    return retval;
}