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++.
//Heap Data Member
//Demonstrates an object with a dynamically allocated data member
#include <iostream>
#include <string>
usingnamespace 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 ==========