5

我认为自己是一个相当新手的 c++ 程序员,我以前从未遇到过这个错误。

我只是想为我的函数创建一个类,但我的头文件中声明的所有 std:: 前缀函数都没有被识别

//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
#ifndef PERSON_H
#define PERSON_H

#include <string>

class Person
{
    public:
        Person();
        std::string getName();  //return first name
        std::string getSurname();//return surname
        int getWeight();    //return weight
        int getBirthYear(); //return birthyear


    private:
//self explanatory member variables but need to be accessible to patient
        std::string m_name;
        std::string m_surname;
        int m_weight;
        int m_birthYear;
};

#endif      

.cpp

//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
#include "Person.h"

Person::Person()
{
    m_name = "name";
    m_surname = "surname";
    m_weight = 0;
    m_birthYear = 0;
    return;
}

//returns m_name
std::string Person::getName()   
{
    return m_name;
}

//returns m_surname
std::string Person::getSurname()
{
    return m_surname;
}

//returns persnon's weight
int Person::getWeight()
{
    return m_weight;
}   

//returns the person's birth year
int Person::getBirthYear()
{
    return m_birthYear;
}

主要的

//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
//comments
#include "Person.h"
#include <iostream>

using namespace std;

int main()
{
//  Person matt;
//  cout << matt.getName() << endl;
//  cout << matt.getSurname() << endl;
//  cout << matt.getWeight() << endl;
//  cout << matt.getBirthYear() << endl;
    return 0;
}

这是我收到的错误

g++ Main.cpp Person.h Person.cpp -o test
Person.cpp: In constructor ‘Person::Person()’:
Person.cpp:17:2: error: ‘m_name’ was not declared in this scope
Person.cpp:18:2: error: ‘m_surname’ was not declared in this scope
Person.cpp: At global scope:
Person.cpp:35:29: error: no ‘std::string Person::getName()’ member function declared in class ‘Person’
Person.cpp:41:32: error: no ‘std::string Person::getSurname()’ member function declared in class ‘Person’

任何想法我做错了什么?这种完全相同的 std:: 格式以前对我有用,但由于某种原因,现在在尝试创建简单的 Person 类时只有 std::string 函数无法识别。

4

1 回答 1

9

从评论:

g++ Main.cpp Person.h Person.cpp -o test

正如 chris 所指出的,在编译命令行中包含头文件是不寻常的。您之前可能使用过的稍微不同的调用:

g++ -c Main.cpp Person.h Person.cpp

创建Main.o, Person.o,但也是一个Person.h.gch预编译的头文件。Person.h预编译的标头不会使用您当前的构建命令重新生成,但仍会使用,因此不会获取更改。

于 2013-04-28T07:02:21.730 回答