Ответ 1
Во-первых, подпись вашей функции data():
bool data(struct *sampleData)
не может работать, потому что аргумент не имеет имени. Когда вы объявляете аргумент функции, который вы намерены фактически получить, ему нужно имя. Поэтому измените его на что-то вроде:
bool data(struct sampleData *samples)
Но в С++ вам вообще не нужно использовать 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);
}
Обратите внимание, что вам нужно передать адрес переменной функции data(), поскольку она принимает указатель.
Однако обратите внимание, что в С++ вы можете напрямую передавать аргументы по ссылке и не нужно "эмулировать" его указателями. Вы можете сделать это вместо:
// 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);
}