C++ Derived Classes

I could really use some help, not sure where I have gone wrong. Thank you.

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(388,5): warning MSB8028: The intermediate directory (Debug\) contains files shared from another project (HWK 8.vcxproj). This can lead to incorrect clean and rebuild behavior.
1> main.cpp
1>c:\users\covell\desktop\c++ advanced objects\hwk 8\hwk 8\hwk 8\animal.h(6): error C2011: 'Animal' : 'class' type redefinition
1> c:\users\covell\desktop\c++ advanced objects\hwk 8\hwk 8\hwk 8\animal.h(6) : see declaration of 'Animal'
1>c:\users\covell\desktop\c++ advanced objects\hwk 8\hwk 8\hwk 8\bird.h(7): error C2504: 'Animal' : base class undefined
1>c:\users\covell\desktop\c++ advanced objects\hwk 8\hwk 8\hwk 8\mammal.h(7): error C2504: 'Animal' : base class undefined

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  //Animal.h
#include <iostream>
#include <string>
using namespace std;

class Animal
{
protected:
	string _name;
	double _weight;
public:
	Animal();
	Animal(string name, double weight);
	~Animal();
};
//Animal.cpp
#include "Animal.h"


Animal::Animal()
{

}

Animal::Animal(string name, double weight)
{
	this->_name = name;
	this->_weight = weight;
}

Animal::~Animal()
{

}
//Bird.h
#include "Animal.h"

#ifndef BIRD_H
#define BIRD_H

class Bird : public Animal
{
private:
	string _featherColor;
public:
	Bird(string name, double weight, string featherColor);
	~Bird();
	void showAnimal();
};

#endif
//Bird.cpp
#include "Bird.h"

Bird::Bird(string name, double weight, string featherColor)
{
	this->_name = name;
	this->_weight = weight;
	this->_featherColor = featherColor;
}

Bird::~Bird()
{

}

void Bird::showAnimal()
{
	cout << "Name: " << _name << endl
		<< "Weight: " << _weight << endl
		<< "Feather Color: " << _featherColor << endl << endl;
}
//Mammal.h
#include "Animal.h"

#ifndef MAMMAL_H
#define MAMMAL_H

class Mammal : public Animal
{
private:
	string _hairColor;
public:
	Mammal(string name, double weight, string hairColor);
	~Mammal();
	void showAnimal();
};

#endif
//Mammal.cpp
#include "Mammal.h"

Mammal::Mammal(string name, double weight, string hairColor)
{
	this->_name = name;
	this->_weight = weight;
	this->_hairColor = hairColor;
}

Mammal::~Mammal()
{

}

void Mammal::showAnimal()
{
	cout << "Name: " << _name << endl
		<< "Weight: " << _weight << endl
		<< "Hair Color: " << _hairColor << endl << endl;
}
//main.cpp
#include "Animal.h"
#include "Bird.h"
#include "Mammal.h"

int main()
{
	Bird bird("", 8.5, "gray");
	Mammal cow("", 8.5, "black and white");

	cout << "Bird Specifications:\n";
	bird.showAnimal();

	cout << "Cow Specifications:\n";
	cow.showAnimal();

	return 0;
}
Last edited on
You don't have include guards in animal.h.

Lines 112-114 you're including animal.h multiple times.
112 first include
113 bird.h includes animal.h
114 mammal.h includes animal.h


Thank you!
Topic archived. No new replies allowed.