Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++][sfml 2.0][programowanie obiektowe][lista inicjalizacyjna][obiekt składowy]

Ostatnio zmodyfikowano 2015-07-10 19:50
Autor Wiadomość
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
C/C++
(...)
class Board
{
public:
    RenderWindow & rw;
    Event & ev;
   
    Board( RenderWindow & r, Event & e )
        : rw( r )
         , ev( e )
    {
        (...)
    }
}

round.cpp
C/C++
#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
C/C++
#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)) ===|
P-134552
RazzorFlame
» 2015-07-10 16:13:11
Nie masz zdefiniowanego domyślnego konstruktora:
C/C++
sf::RenderWindow window;
sf::Event event;
// to zadziala
Board board_1( window, event );
// ale to juz nie
Board board_2;
P-134554
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...
P-134557
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.
P-134558
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
P-134559
« 1 »
  Strona 1 z 1