• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed C++ odwołanie do #define w procedurze lub funkcji

Cloud VPS
0 głosów
483 wizyt
pytanie zadane 13 listopada 2015 w C i C++ przez theseith Nowicjusz (160 p.)
zamknięte 13 listopada 2015 przez theseith

Witam serdecznie forumowiczów!

Ostatnio zacząłem pisać pierwszy większy projekt w c++, przy okazji wzbogacam swoją wiedzę o tym języku.

Natrafiłem na dyrektywę #define i w niej wpisuję stałe pliku main.cpp. Mam również klasę o nazwie char1 w pliku char1.cpp. Co jakiś czas muszę odwołać się do tej klasy i wywołać jakąś procedurę w niej.

Nie jest to co prawda nie wiadomo jakie utrudnienie, ale chciałbym na zaś wiedzieć, czy jest możliwość odwołania się do wartości #define z pliku main.cpp w procedurze klasy char w pliku char1.cpp.

Zdarza mi się tłumaczyć swoje problemy w sposób niezrozumiały, dlatego postaram się przedstawić to wizualnie :D 

Przykładowy plik main.cpp:

#define EXAMPLE 25.12
const float EXAMPLE_2 = 25.12;

int main()
{
   char1 obj;
   float score;
   score = obj.doThing(EXAMPLE_2, EXAMPLE);

   return 0;
}

Tutaj przykładowa klasa:

class char1
{

  public:
    float doThing(const float Ex_2, ??? Ex )
    {
        Ex_2 *= 2;
        Ex *= 2;

        return Ex;
    }

};

Znakami zapytania objąłem ( mam nadzieję, że zrozumiale :P ) swój problem.

Liczę na to, że uda mi się uzyskać satysfakcjonującą odpowiedź.

komentarz zamknięcia: Temat wyczerpany

3 odpowiedzi

+2 głosów
odpowiedź 13 listopada 2015 przez adrian17 Mentor (354,120 p.)

Chyba nie do końca rozumiesz co robi #define. To po prostu znajdź-i-zamień wszystkich wystąpień jednego tekstu drugim tekstem. Tak więc do kompilatora trafi:

score = obj.doThing(EXAMPLE_2, 25.12);

A z tym już chyba wiesz co zrobić.

(inną rzeczą jest, że makr ogólnie powinno się unikać w C++'ie.)

+1 głos
odpowiedź 13 listopada 2015 przez furas Maniak (53,800 p.)

Umieść #define w osobnym pliku .h i będziesz mógł dołączać go (#include) do dowolnego pliku.

W twoim przypadku EXAMPLE jest liczbą rzeczywistą więc możesz zadeklarować

float doThing(const float Ex_2, float Ex )

0 głosów
odpowiedź 13 listopada 2015 przez theseith Nowicjusz (160 p.)
Dzięki wielkie za odpowiedzi. #define poznałem kilka dni temu przeglądając czyjś kod i spodobało mi się, gdyż nie muszę z góry narzucać typu, tak jak ma to miejsce przy zmiennych. Jeśli makr powinno się unikać, tak też zrobię, wydawało mi się że jest to lepszy substytut const float :P

Podobne pytania

0 głosów
2 odpowiedzi 748 wizyt
pytanie zadane 2 sierpnia 2016 w C i C++ przez SebekMakaron Obywatel (1,290 p.)
+1 głos
1 odpowiedź 1,072 wizyt
0 głosów
1 odpowiedź 8,317 wizyt

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...