[C++] jak napisac funkcję do drukowania zmiennych prywatnych

Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] jak napisac funkcję do drukowania zmiennych prywatnych

Post autor: Ser Cubus »

Hej,

piszę program w którym dosyć często powtarza mi się kilka instrukcji (pracujących na składnikach prywatnych klasy bibliotecznej), więc chciałem zrobić z nich funkcję zamiast kopiować kod kilkukrtonie w inne miejsca. Te funkcje gdzie musiałbym to cały czas kopiować też należą do tej klasy bibliotecznej, dlatego one mają dostęp do wszytkich danych (chodzi o guziki w programie z GUI, każdy guzik oznacza funkcję)

Gdyby chodziło o składniki publiczne to sprawa by była oczywsta. Ale one są prywatne ;/

Myślałem nad napisaniem klasy, która dzieczy po tamtej i zawierałaby tylko tę statyczną funkcję do prezentacji. Ale to też nie zadziałą na prywatnych składnikach.

Zastanawiałem się też nad użyciem define, ale nie widzę tego ;/


edit: już sobie poradziłem
jehor
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 11 cze 2013, o 23:19
Płeć: Mężczyzna
Lokalizacja: Opole

[C++] jak napisac funkcję do drukowania zmiennych prywatnych

Post autor: jehor »

Trochę nie za bardzo rozumiem co masz na myśli. Użycie preprocesora po to, by coś co jest prywatne zrobić publicznym jest bardzo brzydkim rozwiązaniem. Jeśli nie ma dostępu do pewnych wartości, to znaczy, że autor biblioteki zaprojektował, aby tak było. Jeśli mógłbyś bardziej przybliżyć temat i napisać jak sobie z tym poradziłeś.
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] jak napisac funkcję do drukowania zmiennych prywatnych

Post autor: Ser Cubus »

robiłem program w Qt, ustawiłem tam label, który wyświetla wynik. Po każdej operacji wynik miał być odświeżony (ten fragment kodu uczyniłem funkcją o której była mowa). Nie szło tego wywowałć z zewnątrz, bo label wyświetlający wynik jest prywatny, ale potem zauważyłem, ze przy tworzeniu aplikacji, generuje mi się plik z klasą, w której mogłem sobie dopisać funkcję, której potrzebowałem

a tak z czystej ciekawości, jak wstawić jakiś blok instrukcji przy użyciu define? Wiem, że jest to nieładne i że się tak nie robi, ale może kiedyś będę czytał taki kod i wypadałoby wiedzieć jak to działa
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] jak napisac funkcję do drukowania zmiennych prywatnych

Post autor: Althorion »

Kod: Zaznacz cały

/**
 ** This example illustrates #define directives.
 **/

#include <stdio.h>

#define SQR(s)  ((s) * (s))
#define PRNT(a,b) 
  printf("value 1 = %d
", a); 
  printf("value 2 = %d
", b) ;

int main(void)
{
  int x = 2;
  int y = 3;

     PRNT(SQR(x),y);

  return(0);
}
ODPOWIEDZ