.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.
pragmas.
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.