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

klasy i extern

Ostatnio zmodyfikowano 2009-10-04 21:47
Autor Wiadomość
steckel
Temat założony przez niniejszego użytkownika
klasy i extern
» 2009-10-04 20:43:44
Witam! Mam problem z deklaracją zmiennej globalnej własnego typu z przedrostkiem 'extern', aby inne pliki źródłowe też ją widziały.

main.hpp:
C/C++
#include "class.hpp"
extern wiadomosci wiad;
class.hpp:
C/C++
class wiadomosci {
private:
    string lista[ MAX_WIADOMOSCI ];
public:
    wiadomosci();
    void dodaj( string txt );
    void pokaz();
};
logi:

error C2146: syntax error : missing ';' before identifier 'wiad'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\class.cpp(133) : error C2228: left of '.dodaj' must have class/struct/union
1>        type is 'int'
1>.\class.cpp(157) : error C2228: left of '.dodaj' must have class/struct/union
1>        type is 'int'
P-10639
Thud
» 2009-10-04 21:13:44
Nie wiemy co jest w class.cpp.
P-10641
steckel
Temat założony przez niniejszego użytkownika
» 2009-10-04 21:23:51
class.cpp:
C/C++
wiadomosci::wiadomosci() {
    for( int a = 0; a < MAX_WIADOMOSCI; a++ ) {
        lista[ a ] = "";
    }
}

void wiadomosci::dodaj( string txt ) {
    for( int a = 0; a < MAX_WIADOMOSCI - 1; a++ ) {
        lista[ a ] = lista[ a + 1 ];
    }
    lista[ MAX_WIADOMOSCI - 1 ] = txt;
}

void wiadomosci::pokaz() {
    for( int a = 0; a < MAX_WIADOMOSCI; a++ ) {
        textprintf_ex( bufor, font, 3 * MARGINES + 2 * PLANSZA_DLUGOSC * PLANSZA_ROZMIAR, MARGINES + a * LINIJKA_H, 0xffffff, - 1, lista[ a ].c_str() );
    }
}

//w klasie gracza:
//---------
wiad.dodaj( "WYGRALES" );
//----------
Mam nadzieje, że to wszystko co trzeba, bo chyba nie ma sensu wklejać całego kodu.
P-10642
Thud
» 2009-10-04 21:27:54
Fail.
P-10643
steckel
Temat założony przez niniejszego użytkownika
» 2009-10-04 21:35:32
Dołączam class.hpp tylko, że zapomniałem to wkleić na forum. Na pewno nie jest to problemem, bo w main.cpp korzystam z innych klas z class.hpp.
P-10644
steckel
Temat założony przez niniejszego użytkownika
» 2009-10-04 21:57:19
No to mam najpierw dołączanie class.hpp, a dopiero później jest ta deklaracja, więc powinno widzieć.
C/C++
#ifndef MAIN_HPP
#define MAIN_HPP
//inne includy
#include "class.hpp"
//deklaacje funkcji
//deklaracje innych zmiennych
extern wiadomosci wiad;
#endif
P-10645
DejaVu
» 2009-10-05 18:25:31
plik.cpp:
klasa zmienna;

plik.hpp:
extern klasa zmienna;

inny_plik.hpp:
C/C++
#include "plik.hpp"
...
void funkcja()
{
    zmienna.metoda();
}
P-10648
steckel
Temat założony przez niniejszego użytkownika
» 2009-10-05 19:38:01
Wystarczyło dać
class wiadomosci;
na samym początku. Tak więc problemu już nie ma :)
P-10653
« 1 » 2
  Strona 1 z 2 Następna strona