在结构中设置函数

时间:2015-12-01 13:38:31

标签: c++ function struct

我无法理解如何在结构中设置我的函数,这可能已经被覆盖过,但是以稍微不同的方式。 考虑下面用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...
}

还是我以前做过的?此外,如果有更好的方法,请告诉我。

3 个答案:

答案 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编译器。

Live example

#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;
}