Thứ nhất, chữ ký của dữ liệu của bạn() chức năng:
bool data(struct *sampleData)
không thể nào làm việc, bởi vì lập luận thiếu một tên. Khi bạn khai báo một đối số hàm mà bạn định thực sự truy cập, nó cần một tên. Vì vậy, hãy thay đổi nó thành một cái gì đó như:
bool data(struct sampleData *samples)
Nhưng trong C++, bạn không cần sử dụng struct
thực sự. Vì vậy, đây chỉ đơn giản là có thể trở thành:
bool data(sampleData *samples)
Thứ hai, struct sampleData
không biết đến dữ liệu() tại điểm đó. Vì vậy, bạn nên khai báo trước đó:
struct sampleData {
int N;
int M;
string sample_name;
string speaker;
};
bool data(sampleData *samples)
{
samples->N = 10;
samples->M = 20;
// etc.
}
Và cuối cùng, bạn cần phải tạo một biến loại sampleData
. Ví dụ: trong hàm main() của bạn:
int main(int argc, char *argv[]) {
sampleData samples;
data(&samples);
}
Lưu ý rằng bạn cần chuyển địa chỉ của biến sang hàm data(), vì nó chấp nhận con trỏ.
Tuy nhiên, lưu ý rằng trong C++ bạn có thể trực tiếp chuyển đối số theo tham chiếu và không cần phải "mô phỏng" đối số bằng con trỏ. Bạn có thể thực hiện việc này thay thế:
// 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);
}
bạn đang chuyển tên kiểu cho hàm không phải là biến? – billz
Đó không phải là tham chiếu, đó là bằng con trỏ. Bạn đã không tạo một thể hiện của 'sampleData' để nó không có tên. Ngoài ra, dữ liệu bool chức năng được cho là biết 'sampleData' tồn tại như thế nào? – Rapptz
@billz 'sampleData' là tên cấu trúc của tôi. Tôi muốn có thể chuyển cấu trúc này đến hàm – Phorce