C++ 中的 Eval() 语法
Eval() syntax in C++
我必须制作一个 class 来保存数据,然后给它一个 eval() 方法。
但是,我无法让 eval() 工作。这是我的距离:
在h文件中:
class MyClass {
private:
double K;
double T;
public:
void eval();
};
在 cpp 文件中:
void MyClass::eval()
{
double MyFunction();
}
非常感谢任何建议。
你的意思好像是下面这样
class MyClass {
private:
double K;
double T;
public:
void eval( double f() );
};
void MyClass::eval( double f() )
{
// ...
double result = f();
//...
}
或者
class MyClass {
private:
double K;
double T;
public:
void eval( double f( double, double ) );
};
void MyClass::eval( double f( double, double ) )
{
// ...
double result = f( K, T );
//...
}
这是一个演示程序
#include <iostream>
class MyClass
{
private:
double K;
double T;
public:
MyClass( double K, double T ) : K( K ), T( T ) {}
void eval( double f( double, double ) );
};
void MyClass::eval( double f( double, double ) )
{
double result = f( K, T );
std::cout << "result = " << result << '\n';
}
double sum( double x, double y )
{
return x + y;
}
int main()
{
MyClass obj( 10.10, 20.20 );
obj.eval( sum );
return 0;
}
它的输出是
result = 30.3
我必须制作一个 class 来保存数据,然后给它一个 eval() 方法。
但是,我无法让 eval() 工作。这是我的距离:
在h文件中:
class MyClass {
private:
double K;
double T;
public:
void eval();
};
在 cpp 文件中:
void MyClass::eval()
{
double MyFunction();
}
非常感谢任何建议。
你的意思好像是下面这样
class MyClass {
private:
double K;
double T;
public:
void eval( double f() );
};
void MyClass::eval( double f() )
{
// ...
double result = f();
//...
}
或者
class MyClass {
private:
double K;
double T;
public:
void eval( double f( double, double ) );
};
void MyClass::eval( double f( double, double ) )
{
// ...
double result = f( K, T );
//...
}
这是一个演示程序
#include <iostream>
class MyClass
{
private:
double K;
double T;
public:
MyClass( double K, double T ) : K( K ), T( T ) {}
void eval( double f( double, double ) );
};
void MyClass::eval( double f( double, double ) )
{
double result = f( K, T );
std::cout << "result = " << result << '\n';
}
double sum( double x, double y )
{
return x + y;
}
int main()
{
MyClass obj( 10.10, 20.20 );
obj.eval( sum );
return 0;
}
它的输出是
result = 30.3