Šta je novo?

potprogram u c++

andonovski

Slavan
Učlanjen(a)
13.01.2005
Poruke
70
Poena
309
kako namestiti potprogram u klasi?
da ne bih svaki put copy/paste-vao gomilu koda. vise mi se svidja da jednom otkucam i onda samo pozivam kad mi zatreba u zasebnim funkcijama clanicama sa drugim argumentima.
:crash: stedi vreme i papir, a ne znam kako da to namestim.
 
Ako sam te dobro razumeo, ti hoces da razdvojis kod u posebne fajlove :

//fajl funkcija.c
void f()
{
...
}
//fajl funkcija.h
#ifndef _funkcija_h
#define _funkcija_h

void f();

#endif

//fajl klasa.h
#ifndef _klasa_h
#define _klasa_h
#include "funkcija.h"
class A
{
void b();
};
#endif

//fajl "klasa.cpp"
#include "klasa.h"
void A:b()
{
...
f();
...
}


???
 
Poslednja izmena:
ne, u tom slucaju unutar funkije ne bih mogao da menjam vrednosti privatnih clanova klase, sto je meni potrebno.
 
Pa izvedi tu funkciju unutar klase. To je i smisao objektno-orijentisanog programiranja :S:

Kod:
class Nešto {
  int a;
  int b;
  ...
protected:
  void FunkcijaKojaRadiNešto() {
    NekaOperacija(a);
    NekaOperacija(b);
    ...
  }
};

Nešto *x = new Nešto();
x->FunkcijaKojaRadiNešto();
 
na to sam i misilio, samo ne znam u kom delu da deklarisem i realizujem.

a jos lepse bi bilo kad bih znao da li je i kako moguce ovako nesto:

Kod:
class Nešto {
  int a;
  int b;
  int n;
  ...
protected:
  void FunkcijaKojaRadiNešto() {
    NekaOperacija(a);
    NekaOperacija(b);
    ...
  }
  void FunkcijaKojaRadiNestoDrugo() {
    NekaOperacija(a);
    NekaOperacija(n);
    ...
  }
};

gde da napisem deklaraciju i realizaciju NekeOperacije u ovom slucaju, posto se koristi u razlicitim funkc clanicama? (p.s. ne znam ni za prvi slucaj);
 
Poslednja izmena:
Ne moraš da pišeš NekuOperaciju, samo sam hteo da ti nagovestim da u okviru FunkcijeKojaRadiNešto možeš da radiš bilo šta sa promenljivima koje su u okviru klase. A naravno isto u okviru klase možeš da definišeš druge funkcije (recimo NekaOperacija) i da ih pozivaš u drugim funkcijama klase (ako ti javlja da "ne vidi" funkciju, deklariši je ispred funkcije u kojoj nameravaš da je koristiš).

Dakle evo ga primer klase koja izračunava faktorijal broja i ispisuje ga:

Kod:
class cFact {
  int a;
public:
  cFact(int aa) { a = aa; }

  int faktorijal() {
    int x = 1;
    for (int i=2; i<=a; i++) x *= i;
    return x;
  }

  void ispisifaktorijal() {
    printf("Faktorijal broja %d je %d\n", a, faktorijal());
  }
};
 
Poslednja izmena:
znaci onda je ovo moze da prodje

Kod:
class A {
  private:
    int a;
    int b;
  public:
    int saberi(int x, int y) { return x+y; };
    int oduzmi(int x, int y) { return x-y; };
    int xxx(int x, int y) { return ( saberi(a,b) * oduzmi(b,a) ); };
    ...
}

???
 
Poslednja izmena:
hvala puno.
 
Nazad
Vrh Dno