【发布时间】:2013-12-15 18:48:17
【问题描述】:
我想知道是否可以有一个带有模板元素的类成员数组。我想要做的是如下所示。
#ifndef _STACK_H_
#define _STACK_H_
#include <exception>
using namespace std;
template<typename T>
class stack
{
public:
stack();
void push(T data);
void pop();
T top();
bool is_empty();
bool is_full();
private:
int elem_max;
int elem_num;
T elem_array[elem_max];
};
#include "stack.template.cc"
#endif
然后在我的主程序中有类似的东西:
#include <iostream>
#include "stack.h"
using namespace std;
int main()
{
stack<int> one;
one.push(10);
return 0;
}
这可能吗?
【问题讨论】:
-
你为什么不试试呢?是的,有可能。
-
Re
_STACK_H_,以下划线后跟大写字母开头的名称保留给实现。 -
这是可能的,但您需要重新考虑上面示例中的
elem_max。 -
另外,为了避免无意的名称冲突(例如,与
std::distance冲突),最好不要(阅读:“从不”)将using namespace std;放在标头中的全局命名空间中。 -
最后(这可能会导致信息溢出?),最好在纯访问器成员函数的末尾添加
const,例如bool is_empty() const。这样可以在const对象上调用此类函数。从而增加类的有用性。 :-)
标签: c++ arrays class templates stack