Przekazywanie obiektu klasy przez referencję do funkcji
Ostatnio zmodyfikowano 2014-08-30 22:55
zinex Temat założony przez niniejszego użytkownika |
Przekazywanie obiektu klasy przez referencję do funkcji » 2014-08-30 22:28:42 Witam, Od niedawna bawię się w programowanie więc proszę o wyrozumiałość. W ramach ćwiczenia poznanych technik programowania c++ wymyśliłem sobie program, który wykorzystuje listę do przechowywania danych. Lista ta jest zagnieżdżona w specjalnie do tego utworzonej klasie. Problem polega na przekazaniu obiektu tej klasy jako referencji do funkcji(a nawet do trzech). W każdym przypadku kompilator wyświetla takie same błędy: 1.error: invalid initialization of non-const reference of type 'Lista&' from a temporary of type 'Lista (*)()' 2.error: in passing argument 1 of 'Lista& AddBookMenu(Lista&)' Oto prototyp klasy zawierającej listę wraz z problematycznymi funkcjami: class Lista { private: int counter; struct Element { Book obj; struct Element * next; }; Element * first; Element * last; void set_available( const string file_name ); public: Lista(); Lista( const Lista & object ); ~Lista(); bool add_element( Book & obj, const string file_name = "available.txt" ); bool delete_element( Book & obj, string Temp, const string file_name = "available.txt" ); bool show_available(); int elements_number() { return counter; } };
void AddBookMenu( Lista & object ); void HireBookMenu( Lista & object1, Lista & object2 ); void PhraseBookMenu( Lista & object1, Lista & object2 );
Nie wiem w tym przypadku gdzie leży problem, czy ktoś mógłby mi to rozjaśnić?Czy problemem jest to, że obiekt klasy Lista zawiera jako składowe wskaźniki? |
|
akwes |
» 2014-08-30 22:41:36 Pokaż jak wywołujesz funkcję. Wywołujesz ją z argumentem "Lista&" czy "Lista"? |
|
zinex Temat założony przez niniejszego użytkownika |
» 2014-08-30 22:47:29 @Akwes funkcję wywołuję w main w następujący sposób: int main() { Lista avbiblioteka(); Lista navbiblioteka(); char choose = '0'; while( choose != '4' ) { std::cout << "1.Dodaj ksi/245/276k/251 do zbioru.\n"; std::cout << "2.Wypo/276ycz ksia/276k/251.\n"; std::cout << "3.Zwrot ksi/245żki.\n"; std::cout << "4.Zamknij program.\n"; std::cout << "Wybierz odpowiedni klawisz: "; while( std::cin >> choose && choose != '1' && choose != '2' && choose != '3' && choose != '4' ) std::cout << "Wybierz odpowiedni klawisz: "; if( choose == '1' ) AddBookMenu( avbiblioteka ); else if( choose == '2' ) HireBookMenu( avbiblioteka, navbiblioteka ); else if( choose == '3' ) PhraseBookMenu( navbiblioteka, avbiblioteka ); system( "cls" ); } return 0; }
Jeśli chodzi o definicje tych funkcji to tam oczywiście jest tak samo jak w prototypie. |
|
1aam2am1 |
» 2014-08-30 22:52:48 |
|
zinex Temat założony przez niniejszego użytkownika |
» 2014-08-30 22:55:57 Ale głupi błąd. Dzięki @1aam2am1, teraz działa ;) |
|
« 1 » |