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

[C++][STL - std::vector] Tworzenie tablicy obiektów bez domyślnego konstruktora.

Ostatnio zmodyfikowano 2015-04-07 23:49
Autor Wiadomość
Kopczak1995
Temat założony przez niniejszego użytkownika
[C++][STL - std::vector] Tworzenie tablicy obiektów bez domyślnego konstruktora.
» 2015-04-07 22:49:34
Witam, mam mały problem z zastosowaniem kontenera std::vector.
W mojej gierce posiadam klasę, której obiekt niestety ale nie może zostać utworzony inaczej jak poprzez konstruktor z odpowiednimi parametrami. Kompilator wymusza ode mnie inicjalizację kilku parametrów z racji tego, że mają to być referencje do paru innych obiektów.
No i próbuję sobie stworzyć tablicę std::vector takich obiektów i mam mały problem...
Oto co próbowałem uczynić:
C/C++
std::vector < Enemy > enemy;

for( int i = 0; i < 10; i++ ) {
    Enemy enemy { arg1, arg2 };
    enemy.pushback( enemy );
}
Coś takiego niby się skompilowało ale... Cóż, niektóre wartości wewnątrz obiektu Enemy nie działały mi potem prawidłowo.
Proszę, powiedzcie mi jak poprawnie powinienem to zrobić :)
P-130386
michal11
» 2015-04-07 23:05:52
emlace_back() albo vector wskaźników i dynamiczna alokacja.
P-130388
Quirinnos
» 2015-04-07 23:06:59
Jak już chcesz robić to w taki sposób, to:
C/C++
for( int i = 0; i < 10; i++ ) {
    enemy.push_back( Enemy( arg1, arg2 ) );
}
P-130389
NopeDotAvi
» 2015-04-07 23:10:19
@Quirinnos
czemu? i tak copy constructor zostanie użyty.
Lepiej użyć wskaźników już.
P-130390
Quirinnos
» 2015-04-07 23:12:30
No jasne, że lepiej dać wskaźnik, a najlepiej uniq'a. Dlatego napisałem "jak już chcesz w ten sposób"
Najładniej to by było dać - jak już wspomnieli - vector inteligentnych wskaźników.
P-130391
Kopczak1995
Temat założony przez niniejszego użytkownika
» 2015-04-07 23:49:43
Dzięki za pomoc ale okazało się, że jednak błąd nie leży w alokacji, coś jest nie tak z moją klasą... Gdzieś po drodze biblioteka SFML gubi moje obrazki :P
P-130392
« 1 »
  Strona 1 z 1