我无法理解如何在结构中设置我的函数,这可能已经被覆盖过,但是以稍微不同的方式。 考虑下面用C ++编写的代码,
//Struct containing useful functions.
typedef struct Instructions{
void W(float);
void X(float);
void Y(float);
void Z(int);
}instruct;
我已经开始使用这些void函数定义我的结构,但是我希望定义程序中每个函数的功能,
void Z(int x){
do something...
}
结构和函数都是在全局中定义的。我的问题是我必须将函数(在本例中为void Z(int x))引用为:
void instruct.Z(int x){
do something...
}
还是我以前做过的?此外,如果有更好的方法,请告诉我。
答案 0 :(得分:2)
我想你想使用成员函数
//Struct containing useful functions.
typedef struct Instructions{
void W(float);
void X(float);
void Y(float);
void Z(int);
}instruct;
void instruct::Z(int x){ // use :: instead of .
//do something...
}
或指向函数的指针
//Struct containing useful functions.
typedef struct Instructions{
void (*W)(float);
void (*X)(float);
void (*Y)(float);
void (*Z)(int);
}instruct;
void Z1(int x){
//do something...
}
// in some function definition
instruct ins;
ins.Z = Z1;
答案 1 :(得分:0)
typedef struct Instructions{
void W(float);
void X(float);
void Y(float);
void Z(int);
}instruct;
void instruct::Z(int x){
do something...
}
如果我理解你的问题,这就是你必须参考的方式..
答案 2 :(得分:0)
根据MikeCAT的回答,std::function
可以用来更“现代”
请注意,这需要C++11
编译器。
#include <functional>
struct Instructions
{
std::function<void (float)> W;
std::function<void (float)> X;
std::function<void (float)> Y;
std::function<void (int)> Z;
};
void Z1(int x)
{
}
int main()
{
Instructions ins;
ins.Z = Z1;
return 0;
}