导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

有关类引用奇怪语法问题(搜了好多资料,均无效果)

cg_xs 2009-08-07 03:51:12

*.h文件
(省略)
#include "SocketServerDlg.h"
(省略)

public:
CSocketServerDlg m_SocketServerDlg;


.cpp文件
(省略)
m_SocketServerDlg.ServerSend(tempTypeSend);
(省略)

在方法及藏书等无均无错误情况下,而且引用定义及声明都无异常或语法错误情况下.以上代码处编译出错
error C2146: 语法错误 : 缺少“;”(在标识符“m_SocketServerDlg”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

有关头文件引用顺序问题也均排除...而且没有重复定义...
这还有什么办法排除错误?
...全文
73 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rebecca_zjy 2009-08-10
我也遇到过这种问题,后来这样写就可以用了:

a.h 中:
#include<b.h>
class b;//b的声明
class a//a的定义
{

};

b.h 中:
#include<a.h>
class a;
class b
{};
回复
cg_xs 2009-08-10
待解。。。
回复
cg_xs 2009-08-07
[Quote=引用 7 楼 bragi523 的回复:]
在a.h中不要引用b.h
而是用
class b;
然后在a.cpp中引用b.h就ok了
[/Quote]

那么如何声明类?
因为a中会用到b类中的函数及全局变量.
b中也会用到a类中的函数及全局变量
回复
bragi523 2009-08-07
[Quote=引用 5 楼 cg_xs 的回复:]
因为他提示了两个
a.h是a.cpp头文件
b.h是b.cpp头文件

a.h引用了b.h 
C/C++ code
b* m_b;
b.h也引用了a.h
C/C++ code
a* m_a;

提示是
error C2146: 语法错误 : 缺少“;”(在标识符“m_a”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2146: 语法错误 : 缺少“;”(在标识符“m_b”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int


[/Quote]


在a.h中不要引用b.h
而是用
class b;
然后在a.cpp中引用b.h就ok了
回复
danxuezx 2009-08-07
有可能是标点符号的问题,还有记得类的声明结束要有分号。我曾遇到这样的问题,是因为我的类声明结束忘了分号。
回复
cg_xs 2009-08-07
因为他提示了两个
a.h是a.cpp头文件
b.h是b.cpp头文件

a.h引用了b.h

b* m_b;

b.h也引用了a.h

a* m_a;


提示是
error C2146: 语法错误 : 缺少“;”(在标识符“m_a”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2146: 语法错误 : 缺少“;”(在标识符“m_b”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

回复
cg_xs 2009-08-07
[Quote=引用 3 楼 arong1234 的回复:]
自己写的类一般没有所谓的路径问题。至于楼主说的顺序问题,一般也很少导致问题的
倒是超前引用有可能导致问题的
http://www.vckbase.com/bbs/prime/viewprime.asp?id=431
[/Quote]
仔细检查了一下.没有超前引用的.
但是有个问题...
a.h是a.cpp头文件
b.h是b.cpp头文件

a.h引用了b.h
b.h也引用了a.h

....这样会引发超前引用?
回复
arong1234 2009-08-07
自己写的类一般没有所谓的路径问题。至于楼主说的顺序问题,一般也很少导致问题的
倒是超前引用有可能导致问题的
http://www.vckbase.com/bbs/prime/viewprime.asp?id=431
回复
jack40101 2009-08-07
VC?工作路径设置可能有问题。我也碰到过这种情况,很简单的代码到处提示有错。后来重装了系统,就没有这个问题了。
还是头文件引用的问题。
回复
DarkChampion 2009-08-07
有没有拼写错误?
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……