设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
C\C++
›
c++中的命名空间与静态成员函数的问题,问题解决 ...
返回列表
查看:
1465
|
回复:
2
c++中的命名空间与静态成员函数的问题,问题解决
[复制链接]
mikkoyue
mikkoyue
当前离线
积分
385
IP卡
狗仔卡
发表于 2008-4-15 01:13:23
|
显示全部楼层
|
阅读模式
$ vi socket.hpp
1 #ifndef _MESSAGE_SOCKET_HPP
2 #define _MESSAGE_SOCKET_HPP
3
4 #include <sys/types.h>
5 #include <sys/socket.h>
6
7 namespace message_socket {
8 class Socket
9 {
10 public:
11 Socket();
12 ~Socket();
13
14 static void setDomain(int domain);
15 static void setType(int type);
16 static void setProtocol(int protocol);
17
18 void debugPrint();
19 private:
20 int _socket;
21 static int _domain;
22 static int _type;
23 static int _protocol;
24 };
25 }
26 #endif
复制代码
$ vi socket.cpp
1 #include "socket.hpp"
2 #include <iostream>
3
4 using std::cout;
5 using std::endl;
6 using namespace message_socket;
7
8 Socket::Socket()
9 {
10 _socket = socket(_domain, _type, _protocol);
11 }
12
13 Socket::~Socket()
14 {
15
16 }
17
18 void Socket::setDomain(int domain)
19 {
20 _domain = domain;
21 }
22
23 void Socket::setType(int type)
24 {
25 _type = type;
26 }
27
28 void Socket::setProtocol(int protocol)
29 {
30 _protocol = protocol;
31 }
32
33 void Socket::debugPrint()
34 {
35 cout << "_socket: " << _socket << endl;
36 cout << "_domant: " << _domain << endl;
37 cout << "_type: " << _type << endl;
38 cout << "_protocol: " << _protocol << endl;
39 }
40
复制代码
$ vi test.cpp
#include "socket.hpp"
using namespace message_socket;
int main()
{
Socket::setDomain(1);
Socket::setType(2);
Socket::setProtocol(0);
Socket *sock = new Socket;
sock->debugPrint();
return 0;
}
复制代码
下面是编译时的错误信息
mikkoyue [ ~/cpp/message ]$ make
make all-am
make[1]: Entering directory `/home/mikkoyue/cpp/message'
g++ -g -O2 -o testSocket test.o socket.o
socket.o: In function `message_socket::Socket::setDomain(int)':
/home/mikkoyue/cpp/message/socket.cpp:20: undefined reference to `message_socket::Socket::_domain'
socket.o: In function `message_socket::Socket::setType(int)':
/home/mikkoyue/cpp/message/socket.cpp:25: undefined reference to `message_socket::Socket::_type'
socket.o: In function `message_socket::Socket::setProtocol(int)':
/home/mikkoyue/cpp/message/socket.cpp:30: undefined reference to `message_socket::Socket::_protocol'
socket.o: In function `Socket':
/home/mikkoyue/cpp/message/socket.cpp:10: undefined reference to `message_socket::Socket::_protocol'
/home/mikkoyue/cpp/message/socket.cpp:10: undefined reference to `message_socket::Socket::_type'
/home/mikkoyue/cpp/message/socket.cpp:10: undefined reference to `message_socket::Socket::_domain'
/home/mikkoyue/cpp/message/socket.cpp:10: undefined reference to `message_socket::Socket::_protocol'
/home/mikkoyue/cpp/message/socket.cpp:10: undefined reference to `message_socket::Socket::_type'
/home/mikkoyue/cpp/message/socket.cpp:10: undefined reference to `message_socket::Socket::_domain'
socket.o: In function `message_socket::Socket::debugPrint()':
/home/mikkoyue/cpp/message/socket.cpp:36: undefined reference to `message_socket::Socket::_domain'
/home/mikkoyue/cpp/message/socket.cpp:37: undefined reference to `message_socket::Socket::_type'
/home/mikkoyue/cpp/message/socket.cpp:38: undefined reference to `message_socket::Socket::_protocol'
collect2: ld 返回 1
make[1]: *** [testSocket] 错误 1
make[1]: Leaving directory `/home/mikkoyue/cpp/message'
make: *** [all] 错误 2
mikkoyue [ ~/cpp/message ]$
复制代码
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
remote fish
remote fish
当前离线
积分
704
IP卡
狗仔卡
发表于 2008-4-15 09:20:44
|
显示全部楼层
static 属性 _domain, _type, _protocol 只有声明, 无定义.
解决方法:
在 socket.cpp 中加入以下行, 位置楼主请自行考虑
int Socket::_domain;
int Socket::_type;
int Socket::_protocol;
复制代码
回复
支持
反对
使用道具
举报
显身卡
mikkoyue
mikkoyue
当前离线
积分
385
IP卡
狗仔卡
楼主
|
发表于 2008-4-15 10:35:03
|
显示全部楼层
谢谢楼上的兄弟,问题解决
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表