|
| Funktion erklærings magi Fra : Jesper Gødvad |
Dato : 22-05-01 09:19 |
|
Hej Alle
Jeg har brug for en smart funktions-erklæring eller et andet trick.
Jeg har nogle frie funktioner som jeg bruger i flere programmer. Det gør jeg
ved en helt almindelig #include, da main() skal have adgang til dem.
Nu vil jeg programmere en *klasse* hvor funktionerne skal bruges som private
funktioner. Er der en smart måde at gøre det på?
Håber nogen kan hjælpe
mvh. jesper
| |
John Mørck Hansen (22-05-2001)
| Kommentar Fra : John Mørck Hansen |
Dato : 22-05-01 12:39 |
|
"Jesper Gødvad" <Xesper@goedvad.dk> skrev:
>
> Nu vil jeg programmere en *klasse* hvor funktionerne skal bruges som
private
> funktioner. Er der en smart måde at gøre det på?
Jeg ved ikke om den er smart men det er sådan her du skal gøre:
class MinNyeSmarteKlasse {
public:
MinNyeSmarteKlasse();
~MinNyeSmarteKlasse();
private:
void MinNyePrivateFunktion();
int MinAndenNyePrivateFunktion();
};
så er det bare at flytte alle funktionernes kode over i din klasse !!!
(John =
| |
Jesper Gødvad (22-05-2001)
| Kommentar Fra : Jesper Gødvad |
Dato : 22-05-01 15:50 |
|
Hej John
> > Nu vil jeg programmere en *klasse* hvor funktionerne skal bruges som
> private
> > funktioner. Er der en smart måde at gøre det på?
>
> Jeg ved ikke om den er smart men det er sådan her du skal gøre:
Nej, det er ikke så smart
Det betyder jo at jeg har en kopi af koden liggende. Jeg ville "linke" til
min originale frie funktion - dog uden at den blev public af den grund.
altså:
-- genbrugsfil.cpp --
#include <nødvendigtBibiotek>
int smartFunktion() {
return 1;
}
-- minKlasse.cpp --
class NyOgSmart {
private:
skjultFunktion() { // som indsætter smartFunktion i stedet }
}
mvh. jesper
| |
John Mørck Hansen (23-05-2001)
| Kommentar Fra : John Mørck Hansen |
Dato : 23-05-01 08:25 |
|
"Jesper Gødvad" <Xesper@goedvad.dk> skrev:
>
> Det betyder jo at jeg har en kopi af koden liggende. Jeg ville "linke" til
> min originale frie funktion - dog uden at den blev public af den grund.
> altså:
>
> -- genbrugsfil.cpp --
> #include <nødvendigtBibiotek>
> int smartFunktion() {
> return 1;
> }
>
> -- minKlasse.cpp --
> class NyOgSmart {
> private:
> skjultFunktion() { // som indsætter smartFunktion i stedet }
> }
Altså, du vil have dine funktioner som ikke er defineret i en klasse, ind i
en klasse uden at genskrive/flytte koden ?
Ja øøhh, hvis funktionerne er skrevet på en sådan måde at de passer nd i en
klasse, ja så, kender jeg en RIGTIG RIGTIG GRÆM MÅDE:
class MinKlasse {
public:
MinKlasse();
MinKlasse( const MinKlasse & );
~MinKlasse();
private: // evt. protcted.
// bøs, prut :)
#include <nødvendigtBibiotek>
};
(John =
| |
Jesper Gødvad (26-05-2001)
| Kommentar Fra : Jesper Gødvad |
Dato : 26-05-01 07:49 |
|
> Altså, du vil have dine funktioner som ikke er defineret i en klasse, ind
i
> en klasse uden at genskrive/flytte koden ?
>
> Ja øøhh, hvis funktionerne er skrevet på en sådan måde at de passer nd i
en
> klasse, ja så, kender jeg en RIGTIG RIGTIG GRÆM MÅDE:
>
> class MinKlasse {
> public:
> MinKlasse();
> MinKlasse( const MinKlasse & );
> ~MinKlasse();
>
> private: // evt. protcted.
>
> // bøs, prut :)
> #include <nødvendigtBibiotek>
> };
Tja... jeg tror faktisk det ville virke i mit tilfælde, men det er
simpelthen får græmt Det endte derfor med cut'n'paste løsningen. Men det
var ovenstående funktionalitet jeg var ude efter, så tak for hjælpen.
mvh. jesper
| |
Igor V. Rafienko (22-05-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 22-05-01 18:25 |
|
* Jesper Gødvad
> Jeg har brug for en smart funktions-erklæring eller et andet trick.
Jaha...
[snip]
> Nu vil jeg programmere en *klasse* hvor funktionerne skal bruges som
> private funktioner. Er der en smart måde at gøre det på?
Du har en rekke frittstående funksjoner, og du vil ha disse kalt fra
klassens private funksjoner? Eller vil du på en eller annen lur måte å
flytte funksjonaliteten fra frittstående funksjoner inni klassen?
I første tilfellet kan det generelle svaret være å lage en assosiativ
array, der du registrerer funksjoner under et bestemt navn, for så å
kalle de etterpå ved å slå opp på dette navnet. Med mindre funksjoner
har samme signatur (annet enn navnet, naturligvis), vil man bruke mer
av tiden sin på å slåss med C++ sitt typesystem. Evt. kan man stappe
funksjoner i en array/vector, men typeproblemet forsvinner ikke (altså
ett eller annet sted i programmet må man fortelle at
"my_private_function" skal kalle "my_smart_lib_function1". Denne
bindingen kan organiseres på forskjellige måter, men den må gjøres på
en eller annen måte).
I andre tilfellet heter teknikken "klipp og lim" (nei, det er ikke
Python med dens dumme 'self' variablene) :)
ivr
--
Documentation is like sex: when it is good, it is very, very good; and
when it is bad, it is better than nothing.
-- Dick Brandon
| |
Jesper Gødvad (24-05-2001)
| Kommentar Fra : Jesper Gødvad |
Dato : 24-05-01 13:47 |
|
"Igor V. Rafienko" <igorr@ifi.uio.no> wrote in message
news:xjvofsl8feq.fsf@helgrind.ifi.uio.no...
> * Jesper Gødvad
>
> > Jeg har brug for en smart funktions-erklæring eller et andet trick.
[snip]
> Eller vil du på en eller annen lur måte å
> flytte funksjonaliteten fra frittstående funksjoner inni klassen?
Ja.
[snip] af noget jeg ikke tror jeg vil give mig i kast med på nuværende
tidspunkt.
> I andre tilfellet heter teknikken "klipp og lim" (nei, det er ikke
> Python med dens dumme 'self' variablene) :)
Tak for hjælpen. Jeg ville undgå cut and paste hvis der var en nem og logisk
løsning, men når du selv foreslår det er jeg ikke i tvivl
mvh. jesper
| |
Stephan Henningsen (22-05-2001)
| Kommentar Fra : Stephan Henningsen |
Dato : 22-05-01 21:25 |
|
On Tue, 22 May 2001 10:18:56 +0200, Jesper Gødvad wrote:
>
>Håber nogen kan hjælpe
Det kan være, du skal kigge på arv (inheritance) af klasser.
Det går ud på, at du genbruger funktioner fra en klasse i en
ny.
--
Stephan Henningsen /
/ http://tisprut.dk
| |
|
|