传递结构到功能(Passing structs to functions)

2019-07-20 20:36发布

我无法理解如何在结构通过考试(引用)的功能,使结构体的成员函数可以被填充。 到目前为止,我已经写了:

bool data(struct *sampleData)
{

}

int main(int argc, char *argv[]) {

      struct sampleData {

        int N;
        int M;
        string sample_name;
        string speaker;
     };
         data(sampleData);

}

我得到的错误是:

C ++需要用于所有声明布尔数据类型说明符(常量&testStruct)

我已经尝试了一些例子说明如下: 简单的方法,通过值C ++通过临时结构?

希望可以有人帮帮我。

Answer 1:

首先,你的数据的签名()函数:

bool data(struct *sampleData)

不可能工作,因为参数缺乏的名称。 当你宣布你的意图实际访问,它需要一个名称的函数参数。 所以将其更改为类似:

bool data(struct sampleData *samples)

但在C ++中,你并不需要使用struct在所有实际。 因此,这可以简单地变为:

bool data(sampleData *samples)

其次, sampleData结构是未知的数据()在该点。 所以,你应该在这之前声明它:

struct sampleData {
    int N;
    int M;
    string sample_name;
    string speaker;
};

bool data(sampleData *samples)
{
    samples->N = 10;
    samples->M = 20;
    // etc.
}

最后,你需要创建类型的变量sampleData 。 例如,在你的main()函数:

int main(int argc, char *argv[]) {
    sampleData samples;
    data(&samples);
}

请注意,您需要将变量的地址传递给数据()函数,因为它接受一个指针。

但是,请注意,在C ++中,你可以直接按引用传递参数,并不需要“模仿”它的指针。 你可以这样做,而不是:

// Note that the argument is taken by reference (the "&" in front
// of the argument name.)
bool data(sampleData &samples)
{
    samples.N = 10;
    samples.M = 20;
    // etc.
}

int main(int argc, char *argv[]) {
    sampleData samples;

    // No need to pass a pointer here, since data() takes the
    // passed argument by reference.
    data(samples);
}


Answer 2:

bool data(sampleData *data)
{
}

你需要告诉你使用哪种类型结构的方法。 在这种情况下,sampleData在。

注:在这种情况下,你需要将结构定义方法之前,它被认可。

例:

struct sampleData
{
   int N;
   int M;
   // ...
};

bool data(struct *sampleData)
{

}

int main(int argc, char *argv[]) {

      sampleData sd;
      data(&sd);

}

注2:我是一个C的家伙。 有可能是一个更C ++十岁上下的方式来做到这一点。



Answer 3:

按引用传递结构到功能:只需:)

#define maxn 1000

struct solotion
{
    int sol[maxn];
    int arry_h[maxn];
    int cat[maxn];
    int scor[maxn];

};

void inser(solotion &come){
    come.sol[0]=2;
}

void initial(solotion &come){
    for(int i=0;i<maxn;i++)
        come.sol[i]=0;
}

int main()
{
    solotion sol1;
    inser(sol1);
    solotion sol2;
    initial(sol2);
}


文章来源: Passing structs to functions
标签: c++ struct