Friday, April 20, 2012

The best way to execute copy constructor using .Copy?

So I need help executing this copy constructor in my object oriented program. The result should be to copy string 1: Hello World into string 2: This is a test.



In my .h file:



void Copy(MyString& one);


In my .cpp file:



void MyString::Copy(MyString& one)
{
one = String;
}


In my main.cpp file:



String1.Print();
cout << endl;
String2.Print();
cout << endl;
String2.Copy(String1);
String1.Print();
cout << endl;
String2.Print();
cout << endl;


The output:



Hello World
This is a test
is a test
This is a test


It should be:



Hello World
This is a test
Hello World
Hello World


Please explain to me what am I doing wrong?



Here is my entire .cpp file:



MyString::MyString()

{

char temp[] = "Hello World";

int counter(0);
while(temp[counter] != '') {
counter++;
}
Size = counter;
String = new char [Size];
for(int i=0; i < Size; i++)
String[i] = temp[i];

}

MyString::MyString(char *message)

{

int counter(0);

while(message[counter] != '') {

counter++;

}

Size = counter;

String = new char [Size];


for(int i=0; i < Size; i++)

String[i] = message[i];

}

MyString::~MyString()

{

delete [] String;

}

int MyString::Length()

{
int counter(0);

while(String[counter] != '')
{
counter ++;
}

return (counter);
}

void MyString:: Set(int index, char b)

{

if(String[index] == '')

{
exit(0);
}

else

{

String[index] = b;
}


}

void MyString::Copy(MyString& one)

{

one = String;


}

char MyString:: Get(int i)
{

if( String[i] == '')
{
exit(1);
}
else
{

return String[i];

}
}



void MyString::Print()

{

for(int i=0; i < Size; i++)

cout << String[i];

cout << endl;


}




No comments:

Post a Comment