I consider myself a fairly novice C ++ programmer, and I have never experienced this error before.
I'm just trying to create a class for my function, but all my std :: prefixed functions declared in my header file are not recognized
#ifndef PERSON_H
#define PERSON_H
#include <string>
class Person
{
public:
Person();
std::string getName();
std::string getSurname();
int getWeight();
int getBirthYear();
private:
std::string m_name;
std::string m_surname;
int m_weight;
int m_birthYear;
};
#endif
.cpp
#include "Person.h"
Person::Person()
{
m_name = "name";
m_surname = "surname";
m_weight = 0;
m_birthYear = 0;
return;
}
std::string Person::getName()
{
return m_name;
}
std::string Person::getSurname()
{
return m_surname;
}
int Person::getWeight()
{
return m_weight;
}
int Person::getBirthYear()
{
return m_birthYear;
}
Main
#include "Person.h"
#include <iostream>
using namespace std;
int main()
{
return 0;
}
And this is the error I get
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’
Any ideas what I'm doing wrong? This is the same std :: formatting worked for me before, but for some reason now only the std :: string functions are not recognized when trying to create a simple Person class.
source
share