首先,你的数据的签名()函数:
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);
}
你正在传递一个类型名称的函数而不是变量? – billz 2013-03-03 02:20:18
这不是通过引用,那是通过指针。你没有创建'sampleData'的实例,所以它没有名字。另外,函数bool数据应该如何知道'sampleData'存在? – Rapptz 2013-03-03 02:21:12
@billz'sampleData'是我的结构体的名称。我希望能够将此结构传递给我现在明白的函数 – Phorce 2013-03-03 02:21:14