本文目录一览:
CPtrList 出错的问题
//以前遇到差不多的问题,以下的应该可以帮你
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。 ITPUB个人空间`)kS3F1]2z?2e
ITPUB个人空间_ V*Jv'xjpd
一、在应用程序类中定义
}!et ~o2aV"u.C0ITPUB个人空间X,Nd4pu @_/}8q1\J
用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。
Vjg-yqZ7z0
D!T-fJ'n[.Y!?0 从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果。访问时用函数“AfxGetApp()”获得CxxxApp类的指针,用 “AfxGetApp()-成员”访问变量或函数。ITPUB个人空间.|Q'l TA:JibRF
%Qv y F,Fn0 例:
/_0u.YYd0ITPUB个人空间0K1If~_
Test.h:(应用程序类头文件)
xt*N}_2~6[8N.y0ITPUB个人空间,n/cx6`p%^q
class CTestApp : public CWinApp
^!o/E@U^O wbR(m h I0{
kY.B3~i5WFrP0 public:
pm'n7x7q0 int x; //全局变量
%Q vv0~Yn0 int f(int y); //全局函数
'dV6aa[K3F2QW0R0 …………
_8mlk$\@"dV0}; ITPUB个人空间)J{-va*_K6|.d/g.YX
ITPUB个人空间_]I!IEZ
Test.cpp:(应用程序类程序文件)ITPUB个人空间F8c ` p)Es.u
/n HnI @0int CTestApp::f(int y) //全局函数定义
R,?h$tH \ ~]0{
6g-bFd!Xj,Ent0 y++;
%x4G0I(z2J3}#b@{|0 return y; ITPUB个人空间B f'\.ab wH%uT(A
}
?9UK@:MD8?~0ITPUB个人空间.KM9u)d4Q g
定义在CTestApp类中的变量和函数可以在其它类中被访问。比如在视图的某函数中要访问变量x和函数f():ITPUB个人空间1@8vSP2]do
:rq"UTp3kn0void CTestView::xyz()ITPUB个人空间Y-Ar(g"]1l HhJ0d
{ ITPUB个人空间5Ir%yZ(A
CTestApp *app = (CTestApp *)AfxGetApp(); //生成指向应用程序类的指针 ITPUB个人空间3q jiWtpI:q p
app-x = 0; //访问变量x
_(DfeZO�kq0 int z = app-f(1); //访问函数f() ITPUB个人空间'P!oagg'd
…………ITPUB个人空间U[ILWeN4f$w
}
{ ^.{1Xn%G0s;T0
@w`\G"Y)YS0 这样,变量x和函数f()可以视作为全局的。
z/nA jH1m"S|)W0
H~!X-w0N.e6AA"[0 用这种方法实现的全局变量和全局函数虽比较简单,但也有缺点,一是访问不太方便,每次都需要获取应用程序类的指针;再就是把一些与应用程序类本身无关的变量和函数放在里面,使这个类看上去怪怪的,破坏了类的封装。
"r j^-K0t"boK.e)QerB0ITPUB个人空间*U}5n gBZ qoz#oc
二、用静态变量和静态函数实现
WO5SV3`rNaS0ITPUB个人空间W@s1r9NF @
很喜欢API函数的那种调用方法,不论在哪个类中只要用“::API函数”就可以调用了。合理利用静态类型(static)可以实现与此相似的全局变量和全局函数。
ho D;@KU0ITPUB个人空间D"E#B�c-kN'\cb0b
静态变量和静态函数有如下性质:
Kx9A_}'?'KGT-b0ITPUB个人空间v(x7Z*^k5rg
若在一个类中用关键字static声明数据成员,则这个数据成员就只存在一个拷贝,无论该类创建了多少个实例,它始终只存在一个,即使该类的实例一个也没创建,它也存在。ITPUB个人空间d4tW(Q1JU
+\;|I G O0L0 若在一个类中用关键字static声明函数,该函数可以用“类名::函数名”方式访问,无需引用该类的实例,甚至这个类的实例可以不存在。
?*jP-Q$gN0ITPUB个人空间v2d5DV,KF'v6e
利用这个性质实现的全局变量和函数使用起来很方便。
e!g|3nwrJ0ITPUB个人空间4s`Ex l/dfh{
值得注意的是,全局变量和全局函数最好集中封装,不要在文档、视图等类内部定义,这样用起来才有全局的感觉。ITPUB个人空间Aqg/^:Zk:U
ITPUB个人空间0tgG"H m
例:ITPUB个人空间;r[5Bn-Yx8F.md)L
8X Z�~1myi0 1、添加一个没有基类的新类,设类名起为CPublic,姑且称之为公用类
oi)Z0F]\+S$I0
!mlzMiN0 单击“Insert”菜单下的“New Class”命令,选择“Class type”为“Generic Class”,在“Name”栏中填入类名“CPublic”,单击“OK”,则新类建立完毕。
kgaCL.i8L0ITPUB个人空间bB�H!t!B,pcr
2、包含公用类的头文件,使各个类都能访问它
5@;|+Kid#W:U0
4L1|2Iy ~l.i4C'O6b0 CPublic的头文件应包含在应用程序类的头文件中,这样在其它类中引用CPublic类时就不需要再包含了。ITPUB个人空间%[ol rjg0xr$t$?
ITPUB个人空间p�L$mmpJ5Jb
Test.h:(应用程序类头文件)ITPUB个人空间)eB�[?t;gp l3c \
Y5I]X!O0#include "Public.h" //包含公用类头文件
_%htle0
U:@,r\PSH0class CTestApp : public CWinApp
%hVLyDVQC0{
"Ul8|%ma/FJw0…………
M�p/?,FF3\0}; ITPUB个人空间(fLhS%y
khv;?2Bk0 3、在公用类中定义全局变量和全局函数,均使用static修饰,静态变量还必须在类外定义和初始化
Mle9v#Q0
8v k8DP]^y0 Public.h:(公用类头文件)
r*_.C@hmt:T?0ITPUB个人空间 c fho�Pij(WP:YM
class CPublicITPUB个人空间/UB;WOcr
{
.zY/of(dl5rC-yS4K0public: ITPUB个人空间#ypv k'U4ac#a~ J!B
CPublic();
8TT9i2AcIMP0virtual ~CPublic();
-H9W y \#aT0
}!p;Wp0a-r0public:
/y3uF1f m*ez:m m/pC}]0static int x; //全局变量
7G3j0F0GL9B+Z0static int time; //全局变量
T5W Z�I5_2R,z0static int f(int y); //全局函数
N9V,hx H1C$]5d0…………
`3BK a9b|J9H0} ITPUB个人空间9vDv^BL!F%{
"T*ot-K.Uhw1N0 在公用类中对静态变量进行初始化和定义函数体:ITPUB个人空间,}5\J4l$h*s8\$}
O]|$iE8FJz!r0 Public.cpp:(公用类程序文件)
v"h�e/^f U_5T.p!s0
%[X$I4GQ2`%F0int CPublic::x = 0; //初始化全局变量
+btgx9Ai0int CPublic::time; //定义全局变量 ITPUB个人空间n4e+bF |'t@;a,f
]5~\(D!i'_4[+R?p0CPublic::CPublic()
S4s#[a$h"m(A+A0{
BYjv"qC k0ITPUB个人空间 i,m�xzL(Z
} ITPUB个人空间y$IQ_G7[Z~"R"i.I
0n:_+C|uZ)a0CPublic::~CPublic()
/U:P.O)JKdw0{ ITPUB个人空间8p!f4t(C%?P0z
ITPUB个人空间/]�Y ucZ1j6w
} ITPUB个人空间C1p8^hf}qn7r
3H^Ost4O}$Q0int CPublic::f(int y) //全局函数,这里不要再加static ITPUB个人空间)R h5g3r)]:TD
{
f%S9OYm0y++; ITPUB个人空间�JVv'I6QO
return y; ITPUB个人空间�H7vDN jza
} ITPUB个人空间4KCj_Gw)Vk u
Ds#lHS:[~!s1nb#[0 4、全局量的使用ITPUB个人空间/g-J5H;AT"v
ITPUB个人空间!M'Ke*sv/_.{+p6b
使用变量:CPublic::变量名
q O1u0LXS[5B"gf0ITPUB个人空间S[%~Z.CN4LE
使用函数:CPublic::函数()ITPUB个人空间H,g$RD)KQ
3xp"\)c%jni u.fK0 如在视图的某函数中访问变量x和函数f():
#c9T}Qt*QB|ni2e@,c0
uC1L*Aw-q'YL.G0void CTestView::xyz()ITPUB个人空间B4Nyv7iV
{
5nQI^$Ix9e*vzZgu0CPublic::x = 0; //访问变量xITPUB个人空间KH7~'x8Z-lq+T
CPublic::time = CPublic::f(1); //访问函数f()ITPUB个人空间h sF%T%Z c'UW
…………ITPUB个人空间;x!k8er;I5}c!Q~
}
W%Wk2H"nA"CT0
;mJ})M S*NW7S0 在其它类中访问x、time和f()的方法与此相同。ITPUB个人空间0Bd W8i!LD5Cr
:?)T%@1_vM VGrW0 5、几点注意:
m1A!MF0?.JL`x#~{0
b"rs'?^(V0 ① 由于静态量可独立于类存在,不需要生成CPublic类的实例。
j*r%PE6`y)K tX1R0
5yR/zta\0 ② 静态数据成员的定义和初始化必须在类外进行,如例中x的初始化;变量time虽然没有初始化,但也必须在类外进行定义。由于没有生成CPublic类的实例,所以它的构造函数和析构函数都不会被执行,在里面做什么工作都没有什么意义。ITPUB个人空间YB+a aV%d d#r8~2V
ITPUB个人空间/u$E;GC;S o
③ 如果静态函数需要访问CPublic类内的变量,这些变量也必须为静态的。因为非静态量在不生成实例时都不会存在。 如:ITPUB个人空间Ac"_? @9b
2}8Or4WIXC e0class CPublic
LEeh1r5v,L0{ ITPUB个人空间5Z*mw Tm
public:
*E'?t1c%IB|vd'J0int x; //内部变量ITPUB个人空间oKA'{;N@ w
static int f(int y) //全局函数
2p$a(~gASAM]0{ ITPUB个人空间`3h6i/IXQ^$P9D
x++;
)H'?9TC[4BE}N^W0return x;
4oK+Vzw(O8H0}; ITPUB个人空间h}i8Sc:z6DTg.p3o
…………
D@s4{$}0};
z5c)L*\V0ITPUB个人空间uG"a/d"m m{
这里x虽为类内成员,但如果不生成CPublic类的实例,就会出现函数f()存在,而变量x不存在的问题。ITPUB个人空间ZO[!u�K)U
:y1dRC;g$g?_,gn0 总之,用没有实例的类管理全局量是一个不错的选择,它具有集中管理,使用方便的好处。当然,除非特别必要,全局量还是少用为好,一个好的编程者决不会随意滥用全局量的,一个封装做得不好的程序,在修改维护时会让你吃足苦头
笔记本自带蓝牙怎样安装IVT软件,为什么我的破解不了
S60手机蓝牙共享PC宽带完全教程手机通过GPRS上网早已普及,作为symbian操作系统的S60智能手机更是不在话下。本教程为你带来的则是手机利用蓝牙共享到PC宽带上网的方法。名正才能言顺,手机共享PC宽带,也许很多朋友觉得多此一举,既然电脑已经上网了,何必再去费心费力再用手机来上网。这里我先举几个例子,也让大家更能意识到这样做并非没有意义:
1、 不想通过GPRS上网,避免高昂的上网费用。或者手机卡并不支持GPRS。国内的GPRS接入一般分cmwap和cmnet两种,cmwap一般提供包月,30元/月左右,但是限制比较多,一般来说国外软件未针对cmwap接入点,根本无法使用cmwap网络,而cmnet一般不提供包月,访问无限制,但对普通用户来说显然过高。联通普通GSM卡无GPRS支持,部分神州行卡也上不到。
2、 避免和别人争电脑,可能只有一台电脑不够用。也许你的家庭,你的宿舍里只有一台电脑,不用再和家人或者朋友争着用了,用起你的手机来,可以在很大程度上解决这一矛盾。
3、 可以用手机直接上网下载软件,方便直接,部分软件和游戏甚至可以网络更新,或者联网(比如最新的MGS Online游戏,以及NG/QD的游戏竞技场)共享PC的网络基本等同于cmnet连接,能让我们免费享受很多手机带来的快乐。本教程吸收了大量反馈及国外资料,针对两种常见驱动书写,目前NOKIA S60全系列机型都有成功案例,跟着我一起step by step吧!共享前必要前提条件
1、Symbian S60机器一台:本教程主要针对NOKIA S60 OS7.0以上版本手机即6600/6260/6670/7610/6620/3230/6680/6681/6630/N70等,之前的NOKIA S60 OS6.0手机有蓝牙串行端口,直接可以利用PC套件或者mRouter进行连接,不再赘述。
2、 任意蓝牙适配器一个普通的1.1标准蓝牙适配器只需60元左右,用来共享网络和一般的文件传输已经足够,当然如果你需要连接高质量的音频等,最好购买1.2标准的蓝牙适配器,价格应该在150以上。
3、VT或者Widcomm蓝牙驱动不能使用Windows XP SP2自带驱动,或者购买时附送的低版本蓝牙驱动,需要IVT BlueSoleil 1.6.1.4以上版本驱动(目前最新版本为2.0),或者widcomm4.0.1.700以上版本驱动(目前最新版本为5.0.1.1200)
4、MicroSoft Windows XP操作系统或者2000操作系统教程在Windows XP系统下测试通过,反馈中也有2000操作系统成功的案例
5、 对应手机的虚拟串口软件Gnubox 由于NOKIA 6600以后的手机都屏蔽了蓝牙串行端口,匈牙利的xan为S60用户开发了一个虚拟蓝牙串口工具软件——gunbox,为广大S60用户带去了更多乐趣。
PC端设置
1. 安装蓝牙驱动确信你没有安装过其他任何蓝牙驱动,XP SP2系统自带的忽略不计。如果之前装过其他驱动,请先卸载!任意选择IVT或者Widcomm驱动开始下一步骤,以下教程所有涉及驱动的步骤均有IVT和Widcomm两个版本,用来测试的分别是IVT1.6.1.4版本驱动以及Widcomm5.0.1.1200版本驱动,都可以很顺利完成共享。 Tips 安装驱动时可能会出现一系列的未通过微软徽标测试的提示,这是由于驱动程序没有通过微软的认证。不用管它,单击仍然安装即可。
2. 查看串行端口号安装结束后,先查看蓝牙串行端口的COM号,为接下来的设置做准备: IVT驱动:安装结束后出现可视化窗口,选择“我的服务——属性——串行端口A” 记下你的端口号,如图,我的是COM6 Widcomm驱动:右键选择“高级配置” 在”本地服务”中查看蓝牙串行端口号 记下你的端口号,如图,我的是COM3
3. 新建调制调解器进入“控制面板”,找到“电话和调制解调器选项”, 如果是第一次进入,需要指定你的位置,输入区号即可,其它都可以不填。 关键的是“调制解调器“一栏,点击“添加——不要检测我的调制解调器,我将从列表中选择——标准调制解调器类型——两台计算机之间的通讯电缆——选定的端口——COMx(此处的端口号就一定要和你自己上一步记录下来的端口号一样!,比如我的就是COM6(IVT)或者COM3(Widcomm)——完成——确定 打开此调制解调器的属性,将最大端口速度调整到115200,即115.2Kbps Tips 端口速度调到最大,并不意味着连接的时候可以达到这么高还受到蓝牙和手机传输速率大小的限制。
4. 建立”传入的连接” 依次进入“控制面板——网络连接——新建连接向导——设置高级连接——接受传入的连接——勾上两台计算机间的通讯电缆(COMx)(端口号即是刚才建立的调制调解器端口号),其它的都不勾——不允许虚拟专用连接——允许连接的用户这里什么都不要选 “网络软件”对话框,我们要打开TCP/IP协议的属性 由于国内宽带接入方式不尽相同,TCP/IP地址的确定是本教程的难点和重点所在,一般来说推荐玩家开启ICS即Internet连接共享(Internet Connection Sharing),此时本机内部IP会变为192.168.0.1,此时就可以设置传入的连接的IP地址为从192.168.0.X到192.168.0.X+1,X不能取1,否则和本机冲突。如果某些无法开启ICS的局域网用户,可以将IP地址设置为和网关IP地址在同一段上,注意不要与局域网其他用户冲突,可以通过DOS命令“开始---运行---ping “IP地址”,如果回应为Request timed out,则表明此地址无人使用,可以填入。 下一步,完成接入的连接的设置。右键查看传入的连接属性,在“用户”栏开启“总是允许象掌上电脑这样的直接连接的设备不需要提供密码来连接”
5. 开启ICS (Internet连接共享) 上文提到的ICS即Internet连接共享一般需要手动开启,ADSL用户打开网络连接,右键查看拨号连接属性,在高级栏勾上ICS 局域网用户则是查看本地连接属性—高级,同样勾上ICS。 点击“设置”进入后启用HTTP/HTTPS等服务。 开启服务时可能会弹出这样的对话框,不要更改任何东西,确定即可
6、启用TCP/IP转发多数情况下,传输控制协议/Internet 协议 (TCP/IP) 转发是禁用的,需要我们手动开启。打开“开始——运行”,输入regedit,即可进入注册表编辑器,找到以下注册表项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\paremeters 设置以下注册表值: 值名称:IPEnableRouter 值类型:REG_DWORD 值数据:1 (默认为0,即不可用)
Tips 值
1 将针对此计算机上安装并使用的所有网络连接启用 TCP/IP 转发注册表编辑千万小心对应,使用不当可造成严重问题。至此,PC端设置基本结束,重新启动计算机,使设置生效。手机端设置 1. 常规安装对应手机型号的Gnubox
2. 手机设置过程
(1) 进入手机的“设置” 设置-连接设置-接入点-选项新增接入点-使用默认设置 连接名称:Bt 数据承载方式:数据通话 拨号号码:随便3-4位(例如8888) 鉴定:普通 其他默认
(2)接入点高级设置选项-高级设置主域名服务器:当地DNS 次域名服务器:当地DNS2 获取服务器地址的三个方法:
a.双击本地连接—支持—详细信息
b.windows优化大师—网络系统信息
c.使用DOS命令得到详细信息,开始—运行—cmd—ipconfig/all 任意选择一个方法都可以,填入得到的DNS地址
Tips 本人的是青岛DNS,并非通用使用PPP压缩:是使用登陆脚本:是其他默认
(3)确认手机蓝牙打开,并配对手机与PC 配对可利用驱动本身或者诺基亚手机PC套件辅助配对,这里为大家介绍的是利用手机本身进行配对:手机功能表——设置——连接功能——蓝牙打开蓝牙 右键进入“配对设备” 选项——新配对设备——搜索到PC——选择此时电脑出现提示 IVT驱动:出现下图的对话框,输入任意数字,确定 手机端出现提示 输入刚才的任意数字,完成配对 Widcomm驱动:任意输入通行码 出现气泡 点击气泡,出现对话框 (输入刚才任意输入的通行码,一样即可为了方便以后的连接,避免每次连接斗需要确认连接,我们将PC设置为手机的授权设备选项——设为授权设备 提示“不经确认便自动连接。继续?”选择是设置完成,退出
(4)Gnubox设置打开已经安装的gnubox a.选项install set RAS login b.选项install auto set modem ID c.选项install create records e.选项exit退出GnuBoxs f.再打开GnuBoxs g.选项2box Bluetooth Serial port选择配对的PC 询问"Do you want to require encryption",确认 h.配对成功后拨号数字消失,退出Gnubox i.回到PC端,开启数据加密或安全连接: IVT驱动:打开“我的蓝牙——安全——安全模式设置为高——并启用加密数据” Widcomm驱动: 打开蓝牙串行端口的属性,确保安全连接已经勾上
Tips 值
1 将针对此计算机上安装并使用的所有网络连接启用 TCP/IP 转发注册表编辑千万小心对应,使用不当可造成严重问题。
j. 接下来进行连接调试再次打开Gnubox 选项debug Test comm channel 出现这样的提示: IVT驱动: Widcomm驱动:出现气泡,需要授权 点击气泡勾上“始终允许该设备访问该服务”,确定 几秒钟后调试结束,生成测试报告,我们可以用SeleQ或者FileMan等文件管理软件在c:\nokia\ctest.txt找到测试报告 用记事本打开应该看到的是 123456Error = 0 78 Error = -3 123456Error =-3也可以 k.选项debugbring up IF同样出现连接提示,并出现“未经身份验证的用户“的网络连接。(此步骤可以省略) 共享宽带宣告成功,如果某一步骤无法继续,请检查是否遗漏某个细节设置。 B.Series60 v2 feature pack 2 (6630/6681/6680)
设置过程和feature pack 1机器步骤差不多,而区别在于:
(1)手机设置里没有“数据通话”可以选择,只能选择GPRS
(2)不必填入拨号号码
(3)在配对手机后,Install - copy from GPRS可以自动设置DNS
(4)在Install - create records后, 接入点将消失.以后也不再不会出现.如果你需要更改设置,按一下步骤: 选择install - set to GPRS. 即可进入修改设置. 再回到gnubox, 选择install - create records.还需要选择 install - copy from gprs
(5)由于接入点不可选择,不少软件无法使用此接入点,但是Opera/IM+这样的软件可以设置Bt接入点为默认接入点,注意你就可以正常使用了
(6)另外有朋友将接入点名称(不是连接名称)改为cmwap,可顺利登陆QQ 具体步骤: 1.GnuBox-Installs-set to GPRS. 2.GnuBox- Installs -Create records.
3.GnuBox- Install - copy settings from gprs 4.Gnubox- Installs- auto set modem ID.
5.GnuBox - Installs- set RAS login .
6.GnuBox - 2box- Serial port (Encryption done). C.Series60 v2 feature pack 3 (N70)设置过程
(1)安装gnubox n70.sis软件
(2)用默认设置建立一个接入点命名为Bt
(3)运行gnubox
(4)操作install-create records
(5) options-close (非常重要,一定要关闭再打开)
(6)再次运行gnubox
(7)操作2box bluetooth-serial port
(8)选择你的电脑
(9)在gnubox中操作debug-bring up IF,你可以获取蓝牙连接,如果成功的话,gnubox将显示'Connection open(连接打开)'的提示。
部分可用软件测试国外网络软件一般均可通过蓝牙共享,而国内部分针对cmwap/cmnet的软件无法找到Bt接入点,所以不能使用,使用软件时注意选择Bt接入点,软件设置有选择接入方式的,选择“直接连接互联网”,不要使用代理。如果你不上GPRS,建议把其他接入点全部删除,避免不小心上到GPRS网络,产生不必要的话费。
a. 浏览器测试可用浏览器软件有: Opera/Net Front/Doris Brower/Ucweb/Opera mini等
b. 即时通讯软件测试可用即时通讯软件有Q1.13/蜜友(meyou)S60 java版/邦邦通(BBT)S60 java版/皮咔(PICA)S60 java版/Turbo MSN/IM+等
c. 在线游戏测试 MGS Online运行流畅
d. 流媒体软件测试掌景无限流畅
e. RSS软件测试拇指天空可用
f. 资讯软件测试 ***
g. 其他 Ucmail可用
常见问题FQ 1. 我装了驱动以后,XP系统还是调用SP2自带的驱动,该怎么办?
答:一般来说新装的驱动都会取代SP2驱动成为蓝牙默认首选驱动,但是某些情况下还是可能出现系统调用自带驱动的情况,因为SP2自带驱动无法方便地删除,有人采用修改自带驱动文件名的办法达到屏蔽的效果,个人觉得麻烦且容易导致系统不稳定,其实我们只需要进入“我的电脑——属性——硬件——设备管理器,找到被系统驱动的蓝牙设备,右键——更新驱动程序——从列表或指定位置安装——不要搜索,我要自己选择要安装的驱动程序 选择“没有经过数字签署”的驱动即可,驱动更新后可能需要手动开启。
2. widcomm驱动出现无法驱动,IVT驱动出现5M传输限制怎么办?
答:由于蓝牙芯片的不同,驱动并非完全支持,如果一旦出现无法驱动或限制的情况可尝试更换驱动程序版本即可。
3. 建立传入的连接时出现无系统响应,如何处理?
答:一般问题出在建立的调制调解器上,确认蓝牙已经正常驱动,且已经正确建立所需要的雕制解调器,其他端口的调制解调器如果不用,尽可以全部删除,然后重新启动计算机,再次建立传入的连接即可成功。
4. gnubox设置后,以后每次通过Bt上网都需要设置一遍么?答:设置完毕以后无需再次设置,即便重新启动手机,设置也仍然生效,使用网络连接时也无需开启gnubox。
5. 启用ICS时出现如下图提示,无法开启怎么办?
答:不要使用自动获取IP地址,配置为指定网关及IP地址,或尝试删除“传入的连接”后启用共享,然后再重新建立“传入的连接”。
6. 已经出现了”未经身份验证的用户”但是仍然无法上网,是何原因.
答:检查DNS设置是否正确,检查PC连接是否开启共享,或者检查IP设置是否在同一段上。关闭个人防火墙,部分防火墙会禁止连接。
7. IVT驱动和Widcomm驱动哪个驱动更好,我该使用哪个驱动?
答:根据作者多次测试的感受,在共享网络方面,IVT驱动表现得更稳定,对XP SP2自带的蓝牙驱动屏蔽也比较好,而且Widcomm部分版本对蓝牙音频支持不好,个人比较倾向使用IVT驱动。
8. 看教程里同步用两个驱动说明,我是不是需要装两个驱动呢?或者说我能不能装两个驱动呢?
答:教程是为了所有的读者服务的,所以同步使用两个驱动进行说明,具体使用中选择其中一个驱动即可,而且一般来说是无法安装两个驱动的(不包括XP SP2自带驱动),安装时可能提示已经安装过蓝牙驱动。写在后面:没有做不到,只有想不到,S60智能手机带给我们很多发挥和想象的空间,希望本教程能带给所有读者一些帮助,让你的S60手机在internet上任意遨游,教程已经力图简单明了,只要你耐心加细心,成功并非难事。
请参考,希望能帮到你。
类的内联函数的实现应该放在哪里
�0�2�0�2�0�2 今天公司研发部举行会议,讨论执行代码审查事宜。在讨论到一条:头文件不能放函数实现代码,我提出异议:内联函数应该例外。同事反驳说:内联函数的实现也可放进cpp文件。我摆出我的理由:如果是类的内部使用该类的内联函数,函数实现放哪都行(头文件和cpp文件都可以);但是如果外部调用类的内联函数同时该函数的实现又是放在cpp中,那会出现错误。同事于是问我会出现错误,当时我也没答上来。于是大家就先略过再去讨论其它方面。 �0�2�0�2�0�2�0�2�0�2 晚上回去写代码测试一下,如果把内联函数的实现放在cpp文件而外部又调用这个函数的话,确实会出现这个函数无法识别的错误。测试办法如下:�0�2�0�2�0�2 新建一个CTest类,在头文件这样声明:class CTest{public:�0�2�0�2�0�2 CTest(void);
�0�2�0�2�0�2 ~CTest(void);
�0�2�0�2�0�2 inline int GetValue();
};在cpp文件这样实现:#include "test.h"
CTest::CTest(void){}CTest::~CTest(void){}inline int CTest::GetValue(){�0�2�0�2�0�2 return 0;
} 然后在main函数这样调用:#include "test.h"
int main( ){�0�2�0�2�0�2 CTest test;
�0�2�0�2�0�2 test.GetValue();
�0�2�0�2�0�2 getchar();
}不出意外的话应该会出现下面的链接错误:1TestSort.obj : error LNK2019: unresolved external symbol "public: int __thiscall CTest::GetValue(void)" (?GetValue@CTest@@QAEHXZ) referenced in function _main
1 F:/MyTest/MyTest/src/Debug/TestSort.exe : fatal error LNK1120: 1 unresolved externals要解决这个错误,需要把CTest类的GetValue函数放回CTest类的头文件。如下:// test.h
#pragma once
class CTest{public:�0�2�0�2�0�2 CTest(void);
�0�2�0�2�0�2 ~CTest(void);
�0�2�0�2�0�2 int GetValue()
�0�2�0�2�0�2 {
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 return 0;
�0�2�0�2�0�2 }
}; 或者是这样:// test.h
#pragma once
class CTest{public:�0�2�0�2�0�2 CTest(void);
�0�2�0�2�0�2 ~CTest(void);
} �0�2�0�2�0�2 《高质量C++编程》的作者林锐博士推荐后一种做法,认为后者是一种良好的编程风格。