COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/alpar/named-param-test2.cc @ 1076:67a115cdade4

Last change on this file since 1076:67a115cdade4 was 1052:172ce6c3ac6e, checked in by Alpar Juttner, 20 years ago

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

File size: 856 bytes
RevLine 
[1052]1struct TR
2{
3  int a;
4  int b;
5  int c;
6};
7
8template<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
45D<TR> d()
46{
47  return D<TR>(TR());
48}
49
50int 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.