Problem z dziedziczeniem
Ostatnio zmodyfikowano 2011-07-29 20:20
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-29 01:08:11 Tematu w ogóle by nie było jak bym w klasie wpisał coś takiego: friend class Wrog_A;
void Animacje_Anime_A( Wrog_A & wrog );
|
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-29 16:34:29 Eh wczoraj napisałem że wszystko działa. Jeżeli funkcji się nie rusza czyli jest takiej postaci: void Animacje::Animacje_Anime_A( Wrog_A * wrog )
To jest wszystko w porządku natomiast jak chcę skorzystać z argumentu czyli: void Animacje::Animacje_Anime_A( Wrog_A * wrog ) { wrog->Alien.Move( 0, 1 ); }
To wyskakuje błąd 1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.cpp(13) : error C2027: use of undefined type 'Wrog_A' 1> c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.h(17) : see declaration of 'Wrog_A' 1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.cpp(13) : error C2227: left of '->Alien' must point to class/struct/union/generic type 1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.cpp(13) : error C2228: left of '.Move' must have class/struct/union
Jeżeli już nie macie sił to nie odpisuje zrozumie, w ostateczności wszystko wrzucę do jednej klasy, a może z czasem coś wykombinuję |
|
kamillo121 |
» 2011-07-29 16:38:53 A dostarczasz deklaracji klasy Worg_A przy ciele metody ? Najlepiej jednak by było gdybyś zapodał trochę kodu bo po twoich przemyśleniach nie wiem jak to zrobiłeś :) |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-29 16:47:33 #ifndef Animacje_hpp #define Animacje_hpp #include <SFML/Graphics.hpp> #include <iostream> #include <time.h>
using namespace std;
class Animacje { public: friend class Wrog_A; int Blokada; float t; Animacje(); void Animacje_Anime_A( Wrog_A * wrog ); }; #endif
#ifndef Enemy_A_hpp #define Enemy_A_hpp
#include <SFML/Graphics.hpp> #include <iostream> #include <time.h> #include "Animacje.h" using namespace std;
class Wrog_A : public Animacje { public: sf::Shape Alien; float Wrog_A_Poz_x; float Wrog_A_Poz_y; vector < sf::Shape > Bullet; void Wrog_A_Tworzenie(); void Wrog_A_StalaPozycja(); void Wrog_A_Wyswietl( sf::RenderWindow & Okno_Glowne ); void Wrog_A_AktualnaPozycja(); void Wrog_A_Bullet_Tworzenie(); void Wrog_A_Bullet_Shoot(); void Wrog_A_Bullet_Wyswietl( sf::RenderWindow & Okno_Glowne ); int Wrog_A_Random(); }; #endif
#include "Animacje.h" #include <SFML/Graphics.hpp> #include <iostream> #include <conio.h> #include <time.h>
using namespace std;
void Animacje::Animacje_Anime_A( Wrog_A * wrog ) { wrog->Alien.Move( 1, 1 ); }
Animacje::Animacje() { Blokada = 0; t = 0; }
#include "Enemy_A.h" #include <SFML/Graphics.hpp> #include <iostream> #include <conio.h> #include <time.h>
using namespace std;
|
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-29 18:33:33 Tutaj to ten sam błąd tylko w jednym pliku kod: #include <iostream> #include <conio.h> #include <string> #include <time.h>
using namespace std;
class Marian;
class Dawid
{ public: bool Blokada; void funkcja( Marian * Obiekt ) { Obiekt->liczba = 2; } };
class Marian : public Dawid { public: int liczba; };
int main() { Dawid Obiekt_Dawid; Marian Obiekt_Marian; Obiekt_Marian.liczba = 1; getch(); }
P.S Gdybym zrobił np Obiekt_Marian.Blokada = 1; To nie było by problemu tylko, że ja to muszę zrobić w funkcji i wtedy wywala błąd |
|
akwes |
» 2011-07-29 18:48:50 No patrz, a mi działa. #include <iostream> #include <conio.h> #include <string> #include <time.h>
using namespace std;
class Marian; class Dawid
{ public: bool Blokada; void funkcja( Marian * ); };
class Marian : public Dawid { public: int liczba; };
void Dawid::funkcja( Marian * Obiekt ) { Obiekt->liczba = 2; }
int main() { Dawid Obiekt_Dawid; Marian Obiekt_Marian; Obiekt_Marian.liczba = 1; getch(); }
Ładnie Ci kompilator pokazuje że źle używasz klasy Marian. Bo dla kompilatora wtedy, klasa marian to samo "class Marian;". Aby użyć danej zmiennej, musisz znać "ciało Mariana"... może to źle brzmi... ale to Ty tak nazwałeś klasy :P Także poznaj Mariana zanim zmienisz mu Dawidem. I przy okazji, każda funkcja definiowana w ciele klasy to funkcja inline :P |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-29 19:05:16 No fakt już prawię się ucieszyłem ale jeszcze jedna rzecz zostałą.
Jeżeli uda do Obiekt_Marian przypisać Blokada = 1; jesteś mistrzem :)
I też w funkcji to zrobić czyli coś takiego Obiekt->Blokada = 1; |
|
akwes |
» 2011-07-29 19:18:40 Czyli że konkretnie co :P ? |
|
1 2 3 4 « 5 » 6 7 |