使用struct作为参数的结构的例程指针

时间:2015-12-16 13:07:25

标签: c++ pointers struct

我有鸡肉和鸡蛋问题。我想将一个数据结构传递给一个例程,该例程包含一个指向需要该结构的例程的指针。

我做了一个非常简单的例子。

我需要在定义之前使用CalcDataStruct,如果我在结构之后添加它,则未定义FuntctionPrototype。

我遇到的问题只出现在前两行,其余的可能包含一些语法错误,因为我没有在编译器中检查过这个。

data.frame

1 个答案:

答案 0 :(得分:3)

您需要添加前向声明(见下文)。

struct CalcDataStruct;只会声明struct CalcDataStruct存在,所以typedef void(*FunctionPrototype)(CalcDataStruct *Ptr);声明会成功,因为现在编译器知道struct CalcDataStruct存在但不知道结构的细节,这无关紧要,因为所有FunctionPrototype声明需要知道参数是指向struct CalcDataStruct的指针。

struct CalcDataStruct; // <<< add this

typedef void(*FunctionPrototype)(CalcDataStruct *Ptr);

struct CalcDataStruct 
{
  int A, B, C, D;
  int Values;
  char SignA, Sign B;
  int Result;
  FunctionPrototype Routine;
}