标题:关于namespace的一个小问题
取消只看楼主
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
已结贴  问题点数:20 回复次数:2 
关于namespace的一个小问题
我的程序简化后是这样的:

程序代码:

//--------------------以下是bpn_conn.hpp中的内容----------------
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string>
#include <cstring>
#include <arpa/inet.h>

namespace BpNet{
    class bpn_conn;
}

class bpn_conn
{
private:
    int    _port;
    string _addr;
public:
    bpn_conn(string addr, int port)
    {
        _addr = addr;
        _port = port;
    }
};

-------------------以下是main.cpp中的内容-----------------
#include <iostream>
#include "bpn_conn.hpp"

using namespace BpNet;
int main()
{
    bpn_conn con("127.0.0.1", 80);
    return 0;
}


以上是一段被我简化过的代码,其中一个是hpp头文件(不是.h头文件),另一个是主函数所在的文件main.cpp

代码中的问题就是把下面的代码注释掉就能通过编译,如果不注释掉会报错
程序代码:
/*
namespace BpNet{
class bpn_conn;
}
*/

...
//using namespace BpNet
...


错误为:
程序代码:
../BpNet/main.cpp: In function 'int main()':
../BpNet/main.cpp:8:5: error: reference to 'bpn_conn' is ambiguous
../BpNet/bpn_conn.hpp:16:7: error: candidates are: class bpn_conn
../BpNet/bpn_conn.hpp:11:11: error:                 struct BpNet::bpn_conn
../BpNet/main.cpp:8:14: error: expected ';' before 'con'

这是什么原因呢?
namespace的使用方法错在哪里呢?

我是C++新手,不太熟悉C++语法。
搜索更多相关主题的帖子: namespace include color 
2013-04-16 15:41
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
下面是Qt生成的一段代码,是头文件mainwindow.h的内容,为什么它这样又可以呢。

程序代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


o(∩∩)Linux & Python 群:187367181
2013-04-16 16:06
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
我把该楼的回复删除了

[ 本帖最后由 thlgood 于 2013-4-16 16:42 编辑 ]

o(∩∩)Linux & Python 群:187367181
2013-04-16 16:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-404411-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.190918 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved