Last change
on this file since 1052:172ce6c3ac6e was
1052:172ce6c3ac6e,
checked in by Alpar Juttner, 19 years ago

Two examples showing a bit more convenient way to implement named parameters.

File size:
856 bytes

Line  

1  struct TR 

2  { 

3  int a; 

4  int b; 

5  int c; 

6  }; 

7  

8  template<class T> struct D 

9  { 

10  T t; 

11  

12  D(const T &tt) :t(tt) {}; 

13  

14  template<class X> struct TA : public T { 

15  X a; 

16  TA(const T &t,const X& x) : T(t), a(x) {}; 

17  }; 

18  template<class X> D<TA<X> > setA(const X &x) { 

19  return D<TA<X> >(TA<X>(this>t,x)); 

20  } 

21  

22  template<class X> struct TB : public T { 

23  X b; 

24  TB(const T &t,const X& x) : T(t), b(x) {}; 

25  }; 

26  

27  template<class X> D<TB<X> > setB(const X &x) { 

28  return D<TB<X> >(TB<X>(this>t,x)); 

29  } 

30  

31  template<class X> struct TC : public T { 

32  X c; 

33  TC(const T &t,const X& x) : T(t), c(x) {}; 

34  }; 

35  

36  template<class X> D<TC<X> > setC(const X &x) { 

37  return D<TC<X> >(TC<X>(this>t,x)); 

38  } 

39  ~D() 

40  { 

41  //Itt csinalunk valamit 

42  } 

43  }; 

44  

45  D<TR> d() 

46  { 

47  return D<TR>(TR()); 

48  } 

49  

50  int main() 

51  { 

52  d(); 

53  d().setA(5.5).setB(10).setC(1.5e12); 

54  } 

Note: See
TracBrowser
for help on using the repository browser.