123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // tempmemb.cpp -- template members
- #include <iostream>
- using std::cout;
- using std::endl;
- template <typename T>
- class beta
- {
- private:
- template <typename V> // nested template class member
- class hold
- {
- private:
- V val;
- public:
- hold(V v = 0) : val(v) {}
- void show() const { cout << val << endl; }
- V Value() const { return val; }
- };
- hold<T> q; // template object
- hold<int> n; // template object
- public:
- beta( T t, int i) : q(t), n(i) {}
- template<typename U> // template method
- U blab(U u, T t) { return (n.Value() + q.Value()) * u / t; }
- void Show() const { q.show(); n.show();}
- };
- int main()
- {
- beta<double> guy(3.5, 3);
- cout << "T was set to double\n";
- guy.Show();
- cout << "V was set to T, which is double, then V was set to int\n";
- cout << guy.blab(10, 2.3) << endl;
- cout << "U was set to int\n";
- cout << guy.blab(10.0, 2.3) << endl;
- cout << "U was set to double\n";
- cout << "Done\n";
- // std::cin.get();
- return 0;
- }
|