Ketchuup69
@Ketchuup69

Почему не могу вынести класс в отдельный файл?

Не могу использовать методы что находятся в файле human.cpp, а из human.h могу.

При вызове метода из human.cpp компилятор говорит:
undefined reference to `human::human(std::string, int)'
undefined reference to `human::getAge()'

Что я делаю не так?

main.cpp
#include <iostream>
#include "human.h"

using namespace std;

int main ()
{
	human test("Bob", 54);
	cout << test.getAge() << endl;
	return 0;	
}


human.h
#ifndef HUMAN_H
#define HUMAN_H
#include <iostream>

using namespace std;

class human
{
	public:
		human (string newName, int newAge);
		void setName (string newName);
		void setAge (int newAge);
		string getName ();
		int getAge ();
	private:
		string name;
		int age;
};

#endif


human.cpp
#include "human.h"
#include <iostream>

using namespace std;

human::human (string newName, int newAge)
{
	setName(newName);
	setAge(newAge);
} 

void human::setName (string newName)
{
	name = newName;
}

void human::setAge (int newAge)
{
	age = newAge;
}

string human::getName ()
{
	return name;
}

int human::getAge ()
{
	return age;
}

int main ()
{
	return 0;
}


Кстати компилятор на human.cpp и human.h не ругается
  • Вопрос задан
  • 714 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ketchuup69
@Ketchuup69 Автор вопроса
Боже мне стыдно...

Там в main.cpp нужно было вместо
#include "human.h"
написать это
#include "human.cpp"

и в файле human.cpp убрать функцию main

UPD:
Я работал в dev-c++ на windows 7.
Я не создавал проекта.
Когда я потом решил создать проект, то у меня все стало работать с
#include "human.h"
Спасибо Антон Жилин, я погуглил и действительно .сpp файл лучше не инклюдить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы