Witam,
używam Qt Creator w Linuksie.
Chcę napisać przykładowy program, który będzie używał klasy ze zdefiniowanymi stałymi a, b, c oraz z konstruktorem kopiującym.
Napisałem taki oto program, który wywala błędy. Co zrobiłem nie tak? A może to błąd kompilatora (choć to szansa 1 na 1E6)?
Według mnie pierwszy z kodów jest logicznie bardziej poprawny. Ale żadna z wersji nie działa.
#include <iostream>
using namespace std;
class Trojmian
{
const double a, b, c; double x;
public:
Trojmian(double ax, double bx, double cx, double xx = 0.0):
a(ax), b(bx), c(cx) { x = xx; }
Trojmian(Trojmian &t) { x = t.x; }
void wyswietl(void) { cout << a << b << c << x; }
};
int main(void)
{
Trojmian t1(1, 0, -1), t2(1, 0, 0);
t1 = t2;
return 0;
}
Próbowałem też tak, ale błąd pojawiał się po wstawieniu instrukcji:
t1 = t2; // a o tę instrukcję najbardziej mi chodzi
#include <iostream>
using namespace std;
class Trojmian
{
const double a, b, c; double x;
public:
Trojmian(double ax, double bx, double cx, double xx = 0.0):
a(ax), b(bx), c(cx) { x = xx; }
Trojmian(Trojmian &t): a(ax), b(bx), c(cx) { x = t.x; }
void wyswietl(void) { cout << a << b << c << x; }
};
int main(void)
{
Trojmian t1(1, 0, -1), t2(1, 0, 0);
t1 = t2; // tutaj ta instrukcja powoduje błąd
return 0;
}