将结构传递给函数

Pho*_*rce 32 c++ struct

我无法理解如何将结构(通过引用)传递给函数,以便可以填充结构的成员函数.到目前为止我写了:

bool data(struct *sampleData)
{

}

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

      struct sampleData {

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

}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

C++需要一个类型说明符用于所有声明bool数据(const和testStruct)

我试过这里解释的一些例子:在C++中通过值传递临时struct的简单方法?

希望可以有人帮帮我.

Nik*_* C. 93

首先,data()函数的签名:

bool data(struct *sampleData)
Run Code Online (Sandbox Code Playgroud)

不可能工作,因为这个论点缺少一个名字.当您声明要实际访问的函数参数时,它需要一个名称.所以将它改为:

bool data(struct sampleData *samples)
Run Code Online (Sandbox Code Playgroud)

但是在C++中,你根本不需要使用它struct.所以这可以简单地变成:

bool data(sampleData *samples)
Run Code Online (Sandbox Code Playgroud)

其次,此时sampleDatadata()不知道struct.所以你应该在那之前声明它:

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

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

最后,您需要创建一个类型的变量sampleData.例如,在main()函数中:

int main(int argc, char *argv[]) {
    sampleData samples;
    data(&samples);
}
Run Code Online (Sandbox Code Playgroud)

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

但请注意,在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);
}
Run Code Online (Sandbox Code Playgroud)