Du bist nicht angemeldet.

Werbeanzeige

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

1

24.10.2008, 17:03

template als operator

wie kann ich in template operatoren verwenden
z.b.

Quellcode

1
2
3
4
5
template< class OP >
inline void set(int a)
{
  _member OP a; 
}


hab es auch mal so versucht:

Quellcode

1
2
3
4
5
template< operator OP >
inline void set(int a)
{
  _member OP a; 
}

aber da kommt einige fehler:
error C2833: Operator 'OP' ist kein bekannter Operator oder Typ
error C2059: Syntaxfehler: 'newline'
fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.

2

24.10.2008, 17:11

? du willst also praktisch operator= da einsetzen können oder was?!
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

3

24.10.2008, 17:12

jap genau =,+=,-=...
damit man bei der set methode eingeben kann welchen operator man benutzen soll

4

24.10.2008, 18:56

Das geht so nicht, schon gar nicht bei Zuweisungsoperatoren.

Man kann aber Funktoren übergeben, und da gibt es auch einige zur Addition etc. in der STL, genauer gesagt im Header <functional>. Weitere Informationen...

5

25.10.2008, 00:46

Hm du kannst z.B. folgendes machen:

C-/C++-Quelltext

1
2
3
4
5
template <typename function_call>
inline void set(const unsigned int value)
{
    function_call(_member, a);
}
dann geschickt mit std::bind1st, std::mem_fun gearbeitet, dann kannste es evtl. schaffen ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

6

25.10.2008, 09:04

oder per boost::lambda

sollte dann irgendwas wie sowas hier sein:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
template< typename OP >
inline void set(OP op, int a)
{
  op(_member,a);
} 

...

set((_1 += _2), 3)


wobei das in mir irgendwie n ungutes gefühl hervorruft :)

Werbeanzeige