Witam, mam pewien problem jeśli chodzi o konstruktor domniemany.
Mam taki kod (oczywiście, to tylko wycinek):
#include <iostream.h>
#include <string.h>
const int pojemnoscKolekcji = 10 ;
//////////////////////////////////////////////////////////////
class Osoba
{
char imie[20],
nazwisko[30] ;
public :
Osoba(char *im, char *nazw)
{
strcpy(imie, im) ;
strcpy(nazwisko, nazw) ;
}
//Osoba() {} // jeśli widzi taką linijkę - kompiluję poprawnie
friend ostream & operator<<(ostream &strumien, Osoba &obiekt) ;
} ;
//////////////////////////////////////////////////////////////
class Kolekcja // ta klasa ma za zadanie kolekjonować obiekty klasy Osoba
{
Osoba tablica[pojemnoscKolekcji] ;
int licznikObiektow ;
public :
Kolekcja() : licznikObiektow(0)
{
} // (1) - tu kompilator wskazuje błąd
int dodaj(Osoba *obiekt, int pozycja = -1) ; // dodawanie elementu
int usun(int pozycja) ; // usuwanie elementu
int zsun(int pozycja) ; // zsuniecie obiektow tablicy czyli usuwanie wolnego miejsca
int rozsun(int pozycja) ; // rozsuniecie obiektow tablicy czyli zrobienie wolnego
// miejsca
Osoba coNaPozycji(int pozycja) ; // sprawdzenie co jest na danej pozycji w tablicy
friend ostream & operator<<(ostream &strumien, Kolekcja &obiekt) ;
} ;
///////////////////////////////////////////////////////////////
/**************************************************************/
/************** definicje funkcji skladowych klasy Kolekcja****/
/**************************************************************/
int Kolekcja::dodaj(Osoba *obiekt, int pozycja)
{
if(pozycja < 0 || pozycja > pojemnoscKolekcji )
{
pozycja = licznikObiektow ;
}
if(licznikObiektow == pozycja)
{
cout << "Kolekcja ma maksymalną liczbę obiektow" << endl ;
}
rozsun(pozycja) ;
tablica[pozycja] = *obiekt ;
licznikObiektow++ ;
return 0 ;
}
/**************************************************************/
Dlaczego kompilator wypisuje mi błąd "no appropriate default constructor available" (VC++ 6.0) ? Przecież, jeśli w klasie jest zdefiniowany jeden, jedyny konstruktor to on staje się konstruktorem domniemanym. Domniemanym - bo innego nie ma :-) Swoją drogą, błąd, niewiedzieć czemu, wyskakuje mi tutaj (1). Czemu tak się dzieje ? Proszę o pomoc.