c++中的嵌套函数
Nested functions in C++
我希望在c++中使用嵌套函数,以避免全局变量。我找到了一种方法,通过使用类(http://www.gotw.ca/gotw/058.htm)。我试图实施那个解决方案,但我失败了。下面是我的代码:
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;
}
目标是返回一个原型为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: error: ‘Myclass::operator double(double, double)’ must take ‘void’ operator double (double, double)
^
main.cpp: In constructor ‘Myclass::My_class(std::complex<double>, double, double, double, double, double, double, int, int, int, int)’:
main.cpp:112:15: error: cannot convert ‘Myclass::g’ from type ‘double (champ_speculaire_class::)(double, double)’ to type ‘double (*)(double, double)’ retval=g;
^
目标是返回一个原型为double (double, double)的函数
operator double (double, double)
声明转换操作符, 不是返回函数的函数。
返回一个函数,因为你用c++11标记了你的问题,我建议使用std::function
:
std::function<double(double, double)> get() const
{
return retval;
}
返回一个指向double(double, double)
函数的函数指针的语法如下:
double (*get())(double, double) const
{
return retval;
}
相关文章:
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 如何在 C++ 的外部类构造函数中初始化嵌套类成员
- 如何使用 binary_search STL 函数在嵌套类中搜索整数?
- 嵌套模板函数采用 2 个具有相同内部类型的容器
- C++将结构传递给函数以访问嵌套结构
- C++ 在外部使用嵌套结构实现类函数
- 嵌套模板函数的重载
- 通过两个嵌套函数传递C++函数的名称
- 如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?
- MSVC 2017 - 错误 - 如何将模板类 X 的模板成员函数声明为嵌套类 X::Y 的好友
- 使用嵌套函数数组是个好主意吗?
- 嵌套的模板结构构造函数实现
- C2436 '{ctor}':构造函数初始值设定项列表中的成员函数或嵌套类
- 我们可以在main函数中声明嵌套类对象吗
- C++嵌套的迭代器类(在链表类中)Insert_After函数
- 访问另一个类中的模板化嵌套类函数和对象
- Cllass 函数不解析嵌套类实例或函数
- C++析构函数嵌套类的显式模板
- C++和析构函数(嵌套类和一般问题)
- C++函数嵌套模板