.h
template < class type-param [ , class type-param ]... > class class-name { ... }
typename
works for class
too.
template <typename ElementType> struct stack { void push(const ElementType & e) { stk.push_back(e) } std::vector<ElementType> stk };
typename
keyword may be necessary to indicate
type specs.
template <class ContainerType> struct C { typename ContainerType::value_type front() { return c.front() } ContainerType c }
stack<int> istk std::map<std::string, int> dictionary
>>
problem.
template <typename ElementType> struct stack { void push(const ElementType &) } void stack:: push(const ElementType & e) { ... }
stack
? What is stack
? And what is ElementType
?
void stack<ElementType>:: push(const ElementType & e) { ... }
ElementType
?
template < typename ElementType > void stack<ElementType>:: push(const ElementType & e) { ... }
.h
.h
files.
.h
files is frowned upon.
.h
files.
.h
file.
.cc
file.
pragma
s.
export
keyword.
export
yet.
template < class A, class B > struct C1 { template < typename X, typename Y > A f(X x, Y y) { B b; } }; int main() { C1<int, std::string> c; int i = c.f(1, 'a'); int j = c.f("hello", 1.0); }
template < typename ElementType, int size > class stack { void push(const ElementType & e) { if (top >= size) { ... } } private: ElementType arr[size] }
The integral template parameter is treated as a const
.
template < typename ElementType, int size = 100 > class stack { ... } int main() { stack<int, 200> istk stack<std::string> sstk }
This page last modified on 22 April 2002.