Zagnieżdżanie klas

dział ogólny

Zagnieżdżanie klas

Nowy postprzez Frani0 » wtorek, 6 października 2009, 22:25

Powiedzmy jest klasa
Kod: Zaznacz cały
class drzwi
{
bool elektryka;
drzwi()
{
elektryka=false;
}
pobierzEl(samochod *autko)
{
//To własnie ta funkcja zgłosi błąd
}
}

class samochod
{
bool foolelektryka;
public:
drzwi *lewe
}


dlaczego ta funkcja zgłosi błąd przecież dynamicznie tworzone formularze mogę tak zagęszczać to czemu to jest błąd?
Avatar użytkownika
Frani0
Bladawiec
Bladawiec
 
Posty: 48
Dołączył(a): poniedziałek, 25 sierpnia 2008, 18:23
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez Cyfrowy Baron » środa, 7 października 2009, 07:36

Błąd wyskakuje dlatego że klasa drzwi niec nie wie o klasie samochod, gdyż klasa drzwi jest umieszczona jako pierwsza nad klasą samochod. Musisz zmienić kolejność:

Kod: Zaznacz cały
    class samochod
    {
    bool foolelektryka;
    public:
    drzwi *lewe
    }
//--------------------------------------
    class drzwi
    {
    bool elektryka;
    drzwi()
    {
    elektryka=false;
    }
    pobierzEl(samochod *autko)
    {
    //To własnie ta funkcja zgłosi błąd
    }
    }


Jeżeli tworzysz klasy w jednym pliku, bez deklaracji w pliku nagłówkowym to ważna jest kolejność wpisywania klas.

poczytaj w serwisie Cyfrowy Baron działy:
teoria -> tworzenie klas
teoria -> funkcje // by lepiej zrozumieć problem
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez Frani0 » środa, 7 października 2009, 10:13

Cyfrowy baroniu tu masz zarazem rację jak i nie źle dałem przykład gdyż obie klasy są w różnych plikach i obie o sobie wiedzą ;)

Kod: Zaznacz cały
#include "samochod.h"

#ifndef drzwi
#define drzwi

class drzwi
{
bool elektryka;
drzwi()
{
elektryka=false;
}
pobierzEl(samochod *autko)
{
//To własnie ta funkcja zgłosi błąd
}
}

#endif


Kod: Zaznacz cały
#include "drzwi.h"

#ifndef samochod
#define samochod

class samochod
{
bool foolelektryka;
public:
drzwi *lewe
}

#endif
Avatar użytkownika
Frani0
Bladawiec
Bladawiec
 
Posty: 48
Dołączył(a): poniedziałek, 25 sierpnia 2008, 18:23
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez Corvis » środa, 7 października 2009, 10:30

jaki błąd ??

gdzie konstuktor i destruktor klasy samochód ??
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez polymorphism » środa, 7 października 2009, 10:50

Corvis napisał(a):gdzie konstuktor i destruktor klasy samochód ??

A muszą być? 8-)

___
PS. Frani0 popracuj nad formatowaniem kodu.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez Frani0 » środa, 7 października 2009, 11:10

to jest kawałek kodu pisany na gorąco ;) więc pewnie się nie kompiluje problem polega na tym iż:

Jeśli przykładowa klasa samochód ma jako swój element klasę np. drzwi to już klasa drzwi nie może mieć nawet jako argument w funkcji klasy samochód jeśli klasa samochód nie miała by jako element klasy drzwi to wtedy w klasie drzwi mogę spokojnie używać klasy samochód

da się to jakoś obejść ?
Avatar użytkownika
Frani0
Bladawiec
Bladawiec
 
Posty: 48
Dołączył(a): poniedziałek, 25 sierpnia 2008, 18:23
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez Corvis » środa, 7 października 2009, 11:11

a no w tym przypadku nie musi na szybko patrzyłem na wskaźniki ;)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez Witold » środa, 7 października 2009, 11:23

Frani0 napisał(a):da się to jakoś obejść ?


deklaracja zapowiadająca
http://forum.gamedev.pl/index.php?topic ... 2#msg16642
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Zagnieżdżanie klas

Nowy postprzez Frani0 » środa, 7 października 2009, 20:13

dziękuje o to właśnie chodziło :)
Avatar użytkownika
Frani0
Bladawiec
Bladawiec
 
Posty: 48
Dołączył(a): poniedziałek, 25 sierpnia 2008, 18:23
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości