Advanced classes error

So I'm doing a tutorial on advanced classed and dynmaic memory, I wrote the code down and all I get is tons of errors. Did I do something wrong, or the author? All my syntax knowledge seems to thing some things are odd like the random op but as I say this is knew to me this part of C++.

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
//Heap Data Member
//Demonstrates an object with a dynamically allocated data member

#include <iostream>
#include <string>
using namespace std;

class Critter
{
public:
	Critter (const string& name = "", int age = 0); 
	~Critter(); // destructor prototype
	Critter(const Critter& c); // copy constructor prototype
	Critter& Critter::operator=(const Critter& c); // overload assignment
	op
		void Greet() const;
private:
	string* m_pName;
	int m_Age;
};

Critter::Critter(const string& name, int age)
{
	cout << "Constructor called\n";
	m_pName = new string (name);
	m_Age = age;
}

Critter::~Critter() //destructor definition
{
	cout << "Destructor called\n";
	delete m_pName;
}

Critter::Critter(const Critter& c) // copy constructor definition
{
	cout << "Copy constructor called\n";
	m_pName = new string(*(c.m_pName));
	m_Age = c.m_Age;
}

Critter& Critter::operator=(const Critter c) //overloaded assignment op def(definition probaly)
{
	cout << "Overloaded assignment operator called\n";
	if (this != &c)
	{
		delete m_pName;
		m_pName = new string (*(c.m_pName));
		m_Age = c.m_pName;
	}
	return *this;
}

void Critter::Greet() const
{
	cout << "I'm " << *m_pName << " and I'm" << m_Age << " years old.\n";
	cout << "&m_pName: " << cout << &m_pName << endl;
}

void testDestructor();
void testCopyConstructor(Critter aCopy);
void testAssignmentOp();

int main();
{
	testDestructor();
	cout << endl;

	Critter crit("Poochie",5);
	crit.Greet();
	testCopyConstructor(crit);
	crit.Greet();
	cout << endl;

	testAssignmentOp();

	return 0;
}

void testDestructor()
{
	Critter toDestory("Rover",3);
	toDestory.Greet();
}

void testCopyConstructor(Critter aCopy)
{
	aCopy.Greet();
}

void testAssignmentOp()
{
	Critter crit1("crit1",7);
	Critter crit2("crit2",9);
	crit1 = crit2;
	crit1.Greet();
	crit2.Greet();
	cout << endl;

	Critter crit3("crit",11);
	crit3 = crit3;
	crit3.Greet();
}


Errors are:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(16): error C2146: syntax error : missing ';' before identifier 'Greet'
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(16): error C2182: '.X' : illegal use of type 'void'
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(16): error C2586: incorrect user-defined conversion syntax : illegal indirections
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(16): warning C4183: 'Greet': missing return type; assumed to be a member function returning 'int'
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(43): error C2511: 'Critter &Critter::operator =(const Critter)' : overloaded member function not found in 'Critter'
1>          c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(9) : see declaration of 'Critter'
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(55): error C2556: 'void Critter::Greet(void) const' : overloaded function differs only by return type from 'int Critter::Greet(void) const'
1>          c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(16) : see declaration of 'Critter::Greet'
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(55): error C2371: 'Critter::Greet' : redefinition; different basic types
1>          c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(16) : see declaration of 'Critter::Greet'
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(65): error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(83): error C2264: 'Critter::Greet' : error in function definition or declaration; function not called
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(88): error C2264: 'Critter::Greet' : error in function definition or declaration; function not called
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(96): error C2264: 'Critter::Greet' : error in function definition or declaration; function not called
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(97): error C2264: 'Critter::Greet' : error in function definition or declaration; function not called
1>c:\users\admin\documents\visual studio 2012\projects\heap data member program\heap data member program\source.cpp(102): error C2264: 'Critter::Greet' : error in function definition or declaration; function not called
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Last edited on
Cleanup line 15.
Missed an & on line 42.
Last edited on
EDIT: Fixed was error in book.
Last edited on
Topic archived. No new replies allowed.