[c++][sfml 2.0][programowanie obiektowe][lista inicjalizacyjna][obiekt składowy]
Ostatnio zmodyfikowano 2015-07-10 19:50
Mistrzu350 Temat założony przez niniejszego użytkownika |
[c++][sfml 2.0][programowanie obiektowe][lista inicjalizacyjna][obiekt składowy] » 2015-07-10 15:52:33 Witam serdecznie :) Zaczęły się wakacje, więc mam trochę więcej czasu na pracę. ^^ By dodać jakotaki zarys tematu powiem, że tworzę nietrudną karcianą gierkę 2d. Mój problem polega na tym, że mam 3 pliki. main.cpp - wykorzystuje obiekt klasy Round round.cpp - zawiera klasę obiektu Round, której obiektem składowym jest Board board.cpp - zawiera klasę obiektu Board Używam biblioteki sfml 2.0. Chciałbym w klasie Board mieć dostęp do zmiennych wymagających listy inicjalizacyjnej, tj sf::RenderWindow i sf::Event. Sprawa wygląda jak poniżej. Poradzicie coś? Z góry dziękuję za zainteresowanie problemem. board.cpp (...) class Board { public: RenderWindow & rw; Event & ev; Board( RenderWindow & r, Event & e ) : rw( r ) , ev( e ) { (...) } }
round.cpp #include "board.cpp" (...) class Round { public: RenderWindow & rw; Event & ev; Board board; Round( RenderWindow & r, Event & e ) : rw( r ) , ev( e ) { board( rw, ev ); (...) } }
main.cpp #include "roundcpp" (...) int main() { RenderWindow rw; Event ev; Round round( rw, ev ); (...) }
||=== Build: Debug in Set (compiler: GNU GCC Compiler) ===| C:\Users\potato\Desktop\set\card.cpp||In member function 'void Card::create(int)':| C:\Users\potato\Desktop\set\card.cpp|52|warning: unused variable 'num' [-Wunused-variable]| C:\Users\potato\Desktop\set\round.cpp||In constructor 'Round::Round(sf::RenderWindow&, sf::Event&)':| C:\Users\potato\Desktop\set\round.cpp|22|error: no matching function for call to 'Board::Board()'| C:\Users\potato\Desktop\set\round.cpp|22|note: candidates are:| C:\Users\potato\Desktop\set\board.cpp|20|note: Board::Board(sf::RenderWindow&, sf::Event&)| C:\Users\potato\Desktop\set\board.cpp|20|note: candidate expects 2 arguments, 0 provided| C:\Users\potato\Desktop\set\board.cpp|12|note: constexpr Board::Board(const Board&)| C:\Users\potato\Desktop\set\board.cpp|12|note: candidate expects 1 argument, 0 provided| C:\Users\potato\Desktop\set\board.cpp|12|note: constexpr Board::Board(Board&&)| C:\Users\potato\Desktop\set\board.cpp|12|note: candidate expects 1 argument, 0 provided| ||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
|
|
RazzorFlame |
» 2015-07-10 16:13:11 Nie masz zdefiniowanego domyślnego konstruktora: sf::RenderWindow window; sf::Event event;
Board board_1( window, event );
Board board_2; |
|
Mistrzu350 Temat założony przez niniejszego użytkownika |
» 2015-07-10 19:30:55 Czyli muszę stworzyć konstruktor domyślny, czy podać argumenty przy tworzeniu obiektu klasy Board w klasie Round? Mógłbyś mi napisać jakoś przykładowo? Próbuję te obie opcje, ale zawsze wyskakują jakieś błędy... |
|
Monika90 |
» 2015-07-10 19:36:31 Po prostu umieść ten fragment board( rw, ev ) na liście inicjlizacyjnej konstruktora, a nie w jego ciele. |
|
Mistrzu350 Temat założony przez niniejszego użytkownika |
» 2015-07-10 19:50:08 Bardzo dziękuję, pomogło :) Życzę miłego wieczoru i zamykam temat |
|
« 1 » |