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.oPerson.oだけでなく、Person.h.gchプリコンパイル済みヘッダーも作成します。プリコンパイル済みヘッダーは、現在のビルド コマンドでは再生成されませんが、引き続き使用されるため、変更は反映されPerson.hません。

于 2013-04-28T07:02:21.730 に答える