小菜关于命名空间小问
我模仿了一个list容器,
namespace yz{
template<class T>
class list
{
public:
list();
void print(void);
// .... ...
protected:
class node
{
public:
T data;
node *next;
node *back;
// constrcutor of the node class
node(const T & element)
:data(element),next(NULL),back(NULL)
{}
}
*first;
private:
};
//------------------------- implemention ----------------------------
template<class T>
list<T>::list():first(NULL)
{
}
// 其他的东西省略
}// end of namespace yz
1. 接口申明和实现必须在同时在namespace后面的大括号里吗?
2. 我又有一下代码:
#include "list.h"
#include <list>
using namespace std;
using namespace yz;
void main()
{
list<int> coll;
coll.push_back( 0 );
coll.push_back( 1 );
coll.push_back( 2 );
coll.print( );
}
错误提示说print()不是list<int>的成员,也就是编译器认为coll是标准库list容器的对象,而不是我写
list容器的对象. 这是为何呢?