Cześć,
za zadanie mam:
- Mam stworzyć metodę zwracającą referencję do obiektu, który jest w niej wcześniej inicjalizowany 'interaktywnie'
- Napisać odpowiedni konstruktor przyjmujący referencję do obiektu jako argument
- Przypisać do nowego obiektu(za pomocą konstruktora) wartość zwracaną z metody wywołanej dla poprzedniego obiektu.
Program wysypuje się po wprowadzeniu wartości, gdzie jest błąd?
Program podzieliłem na 3 pliki (1.nagłówkowy,2.z definicjami, 3.Z funkcją 'main' )
#ifndef CLASS_H_INCLUDED
#define CLASS_H_INCLUDED
#include <cstring>
class Golf
{
private:
static const int Len = 40;
char fullname[Len];
int handicap;
public:
Golf( int b = 0, const char * a ="default");
Golf & setgolf();
Golf(Golf&);
void show() {std::cout<<handicap<<std::endl; std::cout<<fullname;}
};
#endif // CLASS_H_INCLUDED
#include <iostream>
#include "class.h"
using namespace std;
Golf & Golf::setgolf()
{
Golf a;
cout << "Podaj wartosc int : ";
cin>>a.handicap;
cout << endl;
cout << "Podaj wartosc char: ";
cin>>a.fullname;
return a;
}
Golf::Golf( int b,const char * a )
{
strcpy(fullname, a);
handicap = b;
}
Golf::Golf(Golf & a)
{
strcpy(this->fullname, fullname);
this->handicap = a.handicap;
}
#include <iostream>
#include "class.h"
using namespace std;
int main()
{
Golf b;
Golf c (b.setgolf());
c.show();
return 0;
}
Zadanie pochodzi z książki "Szkoła programowania", Stephen'a Prata.