Во-первых, подпись данных() функция:
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
. Например, в основной функции():
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
Это не по ссылке, это указатель. Вы не создали экземпляр 'sampleData', поэтому он не имеет имени. Кроме того, как существуют данные функции bool, которые должны знать 'sampleData'? – Rapptz
@billz 'sampleData' - это имя моей структуры. Я хочу, чтобы передать эту структуру функции – Phorce