extern a enum

0

Hej,

to znowu ja. Może i tym razem pomożecie ;) Muszę szybko dokończyć soft do mgr i mnie wykańcza :(

Mam problem z przekazywaniem zmiennej typu enum. W pliku main.h deklaruję zmienną:

enum OSOBA (LEKARZ = 1, PACJENT) uzytkownik;

w pliku main.cpp używam jej bez problemów. W pliku trasy.h deklaruję ją:

extern enum OSOBA (LEKARZ = 1, PACJENT) uzytk;

ale ja próbuję jej użyć w trasy.cpp, tak samo jak w main.cpp:

uzytk = LEKARZ;

to dostaję błąd: Unresolved external '_uzytk' referenced from TRASY.OBJ.

Jak to naprawić? Ktoś podpowie?

Pozdrawiam i dziękuję z góry za poświęcony czas.
Mal

0

A poważnie potrzbujesz tutaj tej zmiennej jako globalnej?

0

chyba powinno to wyglądać nieco inaczej. Przede wszystkim (nie '(' tylko '{')

enum Osoba { lekarz = 1, pacjent } uzytkownik;
Osoba uztyk;

Po drugie przeczytaj ten artykuł na temat słowa kluczowego extern
Extern

0

Zmienną globalną potrzebuję. Mogłabym zamiast zmiennej globalnej stworzyć osobną klasę, ale jeszcze się przed tym wzbraniam, bo za dużo zmian w już zrobionym kodzie chyba musiałabym wprowadzać... Zresztą w klasach w ogóle nie czuję się zbyt pewnie :/

Jeśli chodzi o nawias, to racja. Literówka popełniona tutaj. W kodzie się zgadza. Przepraszam.

Wydawało mi się, że mogą być dwa równoważne zapisy:

enum OSOBA {PACJENT, LEKARZ};
OSOBA uzytkownik;

oraz

enum OSOBA {PACJENT, LEKARZ} uzytkownik;

oba te sposoby deklaracji u mnie działały razem z późniejszym przypisaniem

uzytkownik = PACJENT;

Problem pojawił się przy próbie wyeksportowania tej zmiennej do innego pliku. Artykuł przeczytałam. Korzystałam już z extern przy okazji funkcji globalnych i zmiennych innych typów. Ale chyba za mało cały czas wiem na temat działania typu enum, żeby informacje z artykułu przełożyć na swój program. Choć nie ukrywam kombinowałam na wszystkie sposoby.

Mal.

0

Ach, no i w pierwszym poście popełniłam błąd raz używając nazwy zmiennej uzytk, a zaraz potem uzytkownik. To mój błąd tutaj, przepraszam za bałagan. Chodzi oczywiście o jedną i tą samą zmienną uzytkownik.

0

A stworzyłaś projekt czy to są dwa oddzielne pliki .cpp?

0

Stworzyłam projekt. Kompilował się ładnie dopóki nie poczułam potrzeby użycia zmiennej enum z main.cpp w trasy.cpp.

0

Dołącz plik nagłówkowy trasy.h zarówno do trasy.cpp jak i do main.cpp. Nie powinno być z tym problemów

0

Mam dołączony i tu i tu od samego początku.

0

W trasy.h powinnaś mieć:

// dolaczenie definicji typu OSOBA
#include "main.h"
// deklaracja nowej zmiennej globalnej na potrzeby trasy.cpp
extern OSOBA uzytk;

ale głowy nie dam, bo nie używam zmiennych globalnych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0