小菜关于命名空间小问

yingzhuo 2004-08-29 01:04:55
我模仿了一个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容器的对象. 这是为何呢?
...全文
142 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingzhuo 2004-08-30
  • 打赏
  • 举报
回复
哦,谢谢各位的支持.
freefalcon 2004-08-30
  • 打赏
  • 举报
回复
ambiguous就是"模棱两可", 比如同时出现函数的两个匹配,而编译器无法决定使用哪一个

你可以同时包含标准库和非标准库试试
#include "iostream.h"
#include <iostream>
using namespace std;

cout << "abc";
  • 打赏
  • 举报
回复
#include "list.h"
#include <list>
using namespace std;
using namespace yz;

void main()
{
yz::list<int> coll;
yz::coll.push_back( 0 );
yz::coll.push_back( 1 );
yz::coll.push_back( 2 );

yz::coll.print( );
}
最好是不要同时使用同样的类名。
roy 2004-08-30
  • 打赏
  • 举报
回复
同意freefalcon(心宇—小小菜鸟想高飞)
yingzhuo 2004-08-30
  • 打赏
  • 举报
回复
什么叫ambiguous问题啊? 请指教,我的代码确实是通不过编译,但是我想知道理由.
freefalcon 2004-08-29
  • 打赏
  • 举报
回复
这是为何?
#include "list.h"
#include <list>
using namespace std;
using namespace yz;

怎么同时使用你的list和标准库的list,而且同时打开名字空间,我觉得首先就会引起ambiguous问题吧

其它如楼上二位所说
BluntBlade 2004-08-29
  • 打赏
  • 举报
回复
template <typename T>
void yz::list<T>::print(){ ... }

我始终认为这种写法很BT……会让新手摸不着头脑。
rorot 2004-08-29
  • 打赏
  • 举报
回复
或者像刀子说的声明实现都放在你的namespace 里

或者实现的时候暴露namespace, eg:
template <typename T>
void yz::list<T>::print(){ ... }
BluntBlade 2004-08-29
  • 打赏
  • 举报
回复
1. 接口申明和实现必须在同时在namespace后面的大括号里吗?
应该,编译器要查看你的类定义的。
yingzhuo 2004-08-29
  • 打赏
  • 举报
回复
自己先顶一下. 请高手相助.

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧