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

extern w pliku .h, używanie jednej zmiennej w 2 plikach .cpp

Ostatnio zmodyfikowano 2014-08-31 15:56
Autor Wiadomość
fokusx
Temat założony przez niniejszego użytkownika
extern w pliku .h, używanie jednej zmiennej w 2 plikach .cpp
» 2014-08-30 23:33:05
Plik header.h
C/C++
class test
{
    int c;
    ...
};

extern test Ztest;

Plik plik1.cpp
C/C++
#include "header.h"

void func1()
{
    Ztest.c = 76;
}

Plik plik2.cpp
C/C++
#include "header.h"

void func2()
{
    Ztest.c++
}

Jak pokazałem w przykładzie chcę używać zmienną Ztest w kilku plikach .cpp
Niestety po zastosowaniu tej metody, plik plik2.cpp nie widzi zmiennej Ztest.

A może w ten sposób kontrolować zmienną Ztest:
Do obu plików .cpp dodaje nowe zmienne np.
C/C++
...

void func1()
{
    static test * external_Ztest = & Ztest; // nowa zmienna
    external_Ztest->c = 76;
}

Czy dzięki dodaniu tej zmiennej uzyskam to co chcę uzyskać? Jak nie to co zrobić?
P-116436
Parapet
» 2014-08-31 08:53:12
Poczytaj o przyjaźniach w klasie.
P-116442
pekfos
» 2014-08-31 11:57:27
c jest prywatne, a Ztest niezdefiniowane.
P-116447
fokusx
Temat założony przez niniejszego użytkownika
» 2014-08-31 14:49:37
C/C++
class test
{
    int c;
    friend void func2( test & );
    friend void func1( test & );
}
i np. teraz w func1 przypisze c liczbę 123;
i następnie func2 będzie chciało odczytać tą liczbę, to pokaże mi 123; czy nic?

Idąc dalej, utworzę dodatkowo obiekt
test zrest;
i żadnej liczby nie zapisze, będzie tam siedziała liczba 123, czy null?
P-116462
pekfos
» 2014-08-31 14:55:52
test zrest;
i żadnej liczby nie zapisze, będzie tam siedziała liczba 123, czy null?
Wartość nieokreślona.
P-116464
fokusx
Temat założony przez niniejszego użytkownika
» 2014-08-31 15:23:56
a co do pierwszej części pytania?
P-116467
pekfos
» 2014-08-31 15:35:43
Podaj konkretny kod, jak chcesz mieć konkretne odpowiedzi na temat jego działania, jeśli samo działanie nie będzie zbyt wymowne..
P-116468
fokusx
Temat założony przez niniejszego użytkownika
» 2014-08-31 15:50:07
plik header.h
C/C++
class test
{
public:
    int a;
    friend void func1( test & );
    friend void func2( test & );
};
plik plik1.cpp
C/C++
#include "header.h"

void func1( test & ex_test )
{
    ex_test->a = 123;
}
plik plik2.cpp
C/C++
#include "header.h"

void func2( test & ext_test )
{
    printf( "%i", ex_test->a );
}

Co wyświetli printf("%i", ex_test->a); w func2(); jeśli pierwsza zostanie wykonana funkcja func2, potem func1 i znów func2?

NIC -> 123?
P-116469
« 1 » 2
  Strona 1 z 2 Następna strona