2017-05-17 4 views
0

Xcode gibt an, dass "stdDev" in meiner Hauptdatei ein nicht deklarierter Bezeichner ist, aber in der Header-Datei deklariert wurde. Ich bin völlig verbrannt, wie ich das beheben kann. Ich würde einige Unterstützung schätzen!C++ - Hauptdatei hat nicht deklarierten Bezeichner, der in der Header-Datei deklariert ist (Xcode)

#include <iostream> 
#include <string> 
#include <cmath> 
#include "Person.hpp" 
using namespace std; 


int main() 
{ 
Person personRob("Rob", 95); 
Person personBob("Bob", 89); 
Person personGob("Gob", 99); 

Person personArray[] = {personRob, personBob, personGob}; 

Person whole_class; 

cout << "Standard deviation is: " << stdDev /* where Xcode is saying that stdDev is an undeclared identifier */ << endl; 

return 0; 
} 

person.hpp:

#include <iostream> 
#include <string> 

#ifndef PERSON_HPP 
#define PERSON_HPP 

class Person 

{ 

private: 

    std::string name; 
    double age; 

public: 
    Person(std::string = " ", double = 0.0); 
    std::string getName(); 
    double getAge(); 
    double stdDev(Person personArray[], int size); 

}; 

#endif 
+0

Es ist schwierig zu sagen, was ohne zu sehen, den Inhalt Person.hpp falsch ist. –

+0

Ich habe die Header-Datei hinzugefügt – midnightmerc

+0

'stdDev' ist eine Methode. Es muss für eine Instanz von "Person" aufgerufen werden. Etwas wie 'cout <<" Standardabweichung ist: "<< whole_class.stdDev (mehr fehlende Sachen geht hier) << endl;' Andernfalls denkt der Compiler, dass Sie eine Variable namens "stdDev" haben, die nicht gefunden werden kann. – user4581301

Antwort

1

stdDev wird als nicht-statische Elementfunktion erklärt. Um es zu nutzen, müssen Sie es auf einem Objekt mit den entsprechenden Argumenten nennen, wie zum Beispiel:

std::cout << whole_class.stdDev(personArray, 3) 

, dass die syntaktischen fix ist.

Allerdings klingt es wie eine gute Passform für eine Member-Funktion. Aus dem Namen der Funktion scheint es, dass Sie beabsichtigen, die Standardabweichung der Alter der Liste von Person s im Array zu berechnen.

Machen Sie es zu einer Nichtmitgliedsfunktion.

Dann können Sie es als:

std::cout << stdDev(personArray, 3) 
Verwandte Themen