Najpierw podpis danych() funkcja:
bool data(struct *sampleData)
nie mogą ewentualnie pracować, ponieważ argument brakuje nazwy. Kiedy deklarujesz argument funkcji, do którego masz zamiar uzyskać dostęp, potrzebujesz nazwy. Więc go zmienić na coś takiego:
bool data(struct sampleData *samples)
Ale w C++, nie trzeba używać struct
w ogóle faktycznie. Więc może po prostu stać:
bool data(sampleData *samples)
drugie, sampleData
struct nie jest znany danych() w tym punkcie. Należy więc uznać je wcześniej:
struct sampleData {
int N;
int M;
string sample_name;
string speaker;
};
bool data(sampleData *samples)
{
samples->N = 10;
samples->M = 20;
// etc.
}
I wreszcie, trzeba utworzyć zmienną typu sampleData
. Na przykład, w głównej() Funkcja:
int main(int argc, char *argv[]) {
sampleData samples;
data(&samples);
}
Należy pamiętać, że trzeba przekazać adres zmiennej do danych funkcji(), ponieważ przyjmuje się wskaźnik.
Należy jednak zauważyć, że w C++ można bezpośrednio przekazywać argumenty przez odniesienie i nie trzeba ich "emulować" za pomocą wskaźników. Możesz to zrobić zamiast:
// 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);
}
przekazujesz nazwę typu do funkcji, która nie jest zmienną? – billz
To nie przez odniesienie, to przez wskaźnik. Nie stworzyłeś instancji 'sampleData', więc nie ma ona nazwy. Ponadto, w jaki sposób funkcja bool danych ma znać "sampleData" istnieje? – Rapptz
@billz 'sampleData' to nazwa mojej struktury. Chcę móc przekazać tę strukturę do funkcji – Phorce