首先,你的數據的簽名()函數:
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