C++ 命名空间问题

fly871117 2011-01-05 09:50:03
在VS2005中,添加一个类库项目 f0122,代码是

// f0122.h

#pragma once
#include "stdafx.h"
using namespace System;
using namespace std;

namespace f0122 {

class myTestClass{
int _id ;
string _name;
public:
myTestClass(int id,string str);

~myTestClass(){}

int getId();
string getName();

void setId(int id);
void setName(string name);
};
}

另外在新建一个Win32控制台应用程序,想在控制台应用程序里调用新建类库的类

#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
using namespace f0122;

但是在引用命名空间时出错(既上面代码第五行出错),请问怎么解决?

PS:我在Win32控制台应用程序已经添加了对f0122的引用。

...全文
364 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsinghua1819 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luciferisnotsatan 的回复:]
另外,最好不要在头文件里用 using 指定。
这么做,会让所有包含了该头文件的代码都用上了那两个using
using namespace System;
using namespace std;



C/C++ code
#include <iostream>
#include <string>
#include <Windows.h>
#include "f0122.……
[/Quote]

++
daliancat1984 2011-01-06
  • 打赏
  • 举报
回复
头文件~~~
fly871117 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 hqin6 的回复:]
引用 26 楼 fly871117 的回复:

引用 25 楼 hqin6 的回复:
引用 21 楼 fly871117 的回复:

把 System 命名空间去掉,连接出现了问题
C/C++ code

#include <iostream>
#include <string>
#include <Windows.h>
#include "./../f0122/f0122.……
[/Quote]

当然
maoxing63570 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 fly871117 的回复:]
如果用

C/C++ code

#include "./../f0122/f0122.h"


则提示:
error C2871: 'System' : a namespace with this name does not exist f:\browser\f0120\f0120\f0122\f0122.h 5
也就是这句错了:

C/C++ code

using ……
[/Quote]
貌似C++中没有System这个命名空间,你还得去找跟这个头文件相关的代码,不过我看你的那个关文件中也没有包含其它的头文件,应该要么就是你的那个头文件本身有错误。你尝试删除引用那个System空间的那句代码,看看
fly871117 2011-01-05
  • 打赏
  • 举报
回复
如果用

#include "./../f0122/f0122.h"

则提示:
error C2871: 'System' : a namespace with this name does not exist f:\browser\f0120\f0120\f0122\f0122.h 5
也就是这句错了:

using namespace System;

fly871117 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lightboat09 的回复:]
你那头文件名是"f0122.h"吗?
还有就是文件有放在工程目录里没有
[/Quote]
没有
fly871117 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lightboat09 的回复:]
我看到了2个工程
[/Quote]
我开始就说2个项目
CUSTCOM 2011-01-05
  • 打赏
  • 举报
回复
使用一个库的时候,同时要使用头文件
hai040 2011-01-05
  • 打赏
  • 举报
回复
加上路径#include "f:/xx/xx/f0122.h"
小楫轻舟 2011-01-05
  • 打赏
  • 举报
回复
我看到了2个工程
小楫轻舟 2011-01-05
  • 打赏
  • 举报
回复
你那头文件名是"f0122.h"吗?
还有就是文件有放在工程目录里没有
fly871117 2011-01-05
  • 打赏
  • 举报
回复
包含了头文件也不行。
提示找不到文件哈
"错误 1 fatal error C1083: Cannot open include file: 'f0122.h': No such file or directory f:\browser\f0120\f0120\f0120\mycpp.cpp 4"

解决方案的结构如下图
fly871117 2011-01-05
  • 打赏
  • 举报
回复
包含了头文件也不行。
提示找不到文件哈
"错误 1 fatal error C1083: Cannot open include file: 'f0122.h': No such file or directory f:\browser\f0120\f0120\f0120\mycpp.cpp 4"

解决方案的结构如下图
  • 打赏
  • 举报
回复
没包含头文件,去哪里找名字空间呢,真是。
mtj520 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luciferisnotsatan 的回复:]

没包含头文件

#include "f0122.h"
[/Quote]
这个不错
bdmh 2011-01-05
  • 打赏
  • 举报
回复
先#include "f0122.h",然后才能用的其中的命名空间
Metrosexual 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luciferisnotsatan 的回复:]
另外,最好不要在头文件里用 using 指定。
这么做,会让所有包含了该头文件的代码都用上了那两个using
using namespace System;
using namespace std;



C/C++ code
#include <iostream>
#include <string>
#include <Windows.h>
#include "f0122.……
[/Quote]
正解!放在CPP里好些
我在地球 2011-01-05
  • 打赏
  • 举报
回复
#include "f0122.h"
luciferisnotsatan 2011-01-05
  • 打赏
  • 举报
回复
另外,最好不要在头文件里用 using 指定。
这么做,会让所有包含了该头文件的代码都用上了那两个using
using namespace System;
using namespace std;


#include <iostream>
#include <string>
#include <Windows.h>
#include "f0122.h"

using namespace std; // 这个using可以不用写,在#include "f0122.h"已经加载了
using namespace f0122;

luciferisnotsatan 2011-01-05
  • 打赏
  • 举报
回复
没包含头文件

#include "f0122.h"
加载更多回复(9)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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