Prosta klasa i błąd kompilacji. Co jest źle?

0

Chcę, a raczej muszę, napisać prostą klasę Wielomian, która wczyta współczynniki wielomianu, a później wartość zmiennej x i obliczy wartość W(x). Napisałem więc taką klasę jak poniżej. Mam pole n, które jest stopniem wielomianu i z racji tego, że jest to stała to nadaję jej wartość przez listę inicjalizującą konstruktora, mam też tablicę współczynników t, którą tworzę w konstruktorze. Cały plik wygląda tak:

#include <cstdlib>
#include <iostream>

class Wielomian {
	public: Wielomian(int n = 0);
	//public: void wczytajWspolczynniki();
	//public: void pisz();
	//public: float obliczWartosc(int x = 0);
	public: ~Wielomian();

	private: const int n; //stopień wielomianu
	private: float *t; //tablica współczynników wielomianu
};

using namespace std;

int main() {
	cout << "Podaj stopień wielomianu W(x) ";
	int st;
	cin >> st;
	Wielomian wielomian(st);
	

	return EXIT_SUCCESS;
}

Wielomian::Wielomian(int n = 0) : n(n) {
	t = new float[n + 1];
}

Wielomian::~Wielomian() {
	delete[] t;
}

A przy kompilacji pojawia się błąd

polynomial.cpp:33:32: error: default argument given for parameter 1 of ‘Wielomian::Wielomian(int)’ [-fpermissive]
 Wielomian::Wielomian(int n = 30) : n(n) {
                                ^
polynomial.cpp:12:10: error: after previous specification in ‘Wielomian::Wielomian(int)’ [-fpermissive]
  public: Wielomian(int n = 30);
          ^

O co chodzi z tym błędem i jak poprawić ten prosty kod żeby kompilował się bez błędu? Wszystko robię tak jak jest powiedziane na stronie http://cpp0x.pl/ i nie mam już pojęcia jak to poprawić.

3

Parametr domyślny ma być tylko w deklaracji. W definicji nie ma być. Wywal = 0 z definicji konstruktora. Przecież w komunikacie błędu jest wszystko napisane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1