在vs2008中如何定义一个自定义类型的指针

mashimaro1225 2011-01-17 02:44:16
FuShiYuPengZhangDib是我自己定义的一个类,编译能通过。
而当我用这类型来定义一个新的指针变量时(FuShiYuPengZhangDib *CDibNew;),系统却报错。错误提示如下:
1>f:\projects\边缘检测\dynsplitview2.h(31) : error C2143: 语法错误 : 缺少“;”(在“*”的前面)
1>f:\projects\边缘检测\dynsplitview2.h(31) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>f:\projects\边缘检测\dynsplitview2.h(31) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

三个错误均来自同一行代码(标注为红色的代码)。该怎么来处理呢?记得这样的定义在VC6.0中是可以的。
...全文
422 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010246197 2013-05-18
  • 打赏
  • 举报
回复
我也遇到了这种问题,相当纠结啊
赵4老师 2011-01-18
  • 打赏
  • 举报
回复
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
TimZhuFaith 2011-01-18
  • 打赏
  • 举报
回复
不是吧。。。[Quote=引用 25 楼 mashimaro1225 的回复:]
引用 22 楼 anhuihulei 的回复:
没有解决就发到我邮箱 我帮你看看 donghua231@163.com
不保证一定能解决~


谢谢!不知道怎么搞的,一模一样的代码,半个小时前还一直不能通过编译,现在却可以正常运行。。。
相当的无奈~
[/Quote]
mashimaro1225 2011-01-18
  • 打赏
  • 举报
回复
问题解决了,结贴,给分!
mashimaro1225 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 anhuihulei 的回复:]
没有解决就发到我邮箱 我帮你看看 donghua231@163.com
不保证一定能解决~
[/Quote]

谢谢!不知道怎么搞的,一模一样的代码,半个小时前还一直不能通过编译,现在却可以正常运行。。。
相当的无奈~
mashimaro1225 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 qwqwqw408 的回复:]
引用 19 楼 mashimaro1225 的回复:
引用 16 楼 qwqwqw408 的回复:
把头文件中#include "Cdib.h"改为class FuShiYuPengZhangDib ;
一切就OK了


CDIB和FuShiYuPengZhangDib,这是两个完全不一样的头文件,怎么能说还就换呢?!!!


我的意思是让你在头文件那加上class FuS……
[/Quote]

谢谢。现在可以用了。代码还是原来那样,压根就没动过,现在编译却能通过。。。相当的无奈
qwqwqw408 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 mashimaro1225 的回复:]
引用 16 楼 qwqwqw408 的回复:
把头文件中#include "Cdib.h"改为class FuShiYuPengZhangDib ;
一切就OK了


CDIB和FuShiYuPengZhangDib,这是两个完全不一样的头文件,怎么能说还就换呢?!!!
[/Quote]

我的意思是让你在头文件那加上class FuShiYuPengZhangDib ;这一句。不需要FuShiYuPengZhangDib的头文件,我以为你FuShiYuPengZhangDib 的头文件是"Cdib.h"。如果不是,那你替换别的。这种类的指针,经常会有这种找不到定义的问题,即使你一引用了正确的头文件。这个时候只需要在头文件加入class 类名;即可,在cpp里面加上那个类的头文件。
anhuihulei 2011-01-18
  • 打赏
  • 举报
回复
没有解决就发到我邮箱 我帮你看看 donghua231@163.com
不保证一定能解决~
mashimaro1225 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 qingyun0922 的回复:]
我觉得是你的头文件 可能有多个,导致编译寻找的路径不对。这个是我编译的,你可以对比一下
cdib.h
class CDib
{
};

FuShiYuPengZhangDib.h
#ifndef __FuShiYuPengZhangDib_H
#define __FuShiYuPengZhangDib_H
#include "cdib.h"
class FuShiYuPe……
[/Quote]

我想问一下,你用的是什么编译器?像我这样的定义,完全一样的代码,在VC6.0中是可以通过的,但是在VS2008中却不行
mashimaro1225 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 bluesky12312388 的回复:]
CDibNew 这个名字与系统库里的重名了,
改个名字就好了。
[/Quote]

就算是重名,那IDE报错也不可能是这种类型的吧?!
mashimaro1225 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 qwqwqw408 的回复:]
把头文件中#include "Cdib.h"改为class FuShiYuPengZhangDib ;
一切就OK了
[/Quote]

CDIB和FuShiYuPengZhangDib,这是两个完全不一样的头文件,怎么能说还就换呢?!!!
qwqwqw408 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 mashimaro1225 的回复:]
引用 22 楼 anhuihulei 的回复:
没有解决就发到我邮箱 我帮你看看 donghua231@163.com
不保证一定能解决~


谢谢!不知道怎么搞的,一模一样的代码,半个小时前还一直不能通过编译,现在却可以正常运行。。。
相当的无奈~
[/Quote]

肯定是改了少许地方吧,莫非编译结果还受时间影响。。
qwqwqw408 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 bluesky12312388 的回复:]
CDibNew 这个名字与系统库里的重名了,
改个名字就好了。
[/Quote]

你真是个‘人才’,专误导人的
bluesky12312388 2011-01-17
  • 打赏
  • 举报
回复
CDibNew 这个名字与系统库里的重名了,
改个名字就好了。
qwqwqw408 2011-01-17
  • 打赏
  • 举报
回复
把头文件中#include "Cdib.h"改为class FuShiYuPengZhangDib ;
一切就OK了
qingyun0922 2011-01-17
  • 打赏
  • 举报
回复
我觉得是你的头文件 可能有多个,导致编译寻找的路径不对。这个是我编译的,你可以对比一下
cdib.h
class CDib
{
};

FuShiYuPengZhangDib.h
#ifndef __FuShiYuPengZhangDib_H
#define __FuShiYuPengZhangDib_H
#include "cdib.h"
class FuShiYuPengZhangDib :public CDib
{
public:
FuShiYuPengZhangDib();
~FuShiYuPengZhangDib();

public:
void Quanfangxiangpengzhang();
void Chuizhipengzhang();
void Shuipingpengzhang();
void Quanfangxiangfushi();
void Shuipingfushi();
void ChuiZhiFuShi();

protected:

};


#endif

FuShiYuPengZhangDib.cpp
#include "testVector.h"

main()
{
FuShiYuPengZhangDib *a;
}

我这里是ok的,不知道对你是否有帮助


  • 打赏
  • 举报
回复
没看出任何问题,你的.cpp里面有没包含相关的头文件?
mashimaro1225 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 maoxing63570 的回复:]
你确定#include "Cdib.h"这个头文件在工程的目录下
[/Quote]

确定以及肯定!
因为我这是在原来边缘检测的基础上添加了细化骨架的代码,结果就出错了。没添加之前一切都是正常的。
mashimaro1225 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yangglemu 的回复:]
试试:
class FuShiYuPengZhangDib;//类前向声明
.......
FuShiYuPengZhangDib *CDibNew;//再声明指针变量

如果出现一大堆XXX没有定义的错误,可以肯定是FuShiYuPengZhangDib类的头文件没有正确包含
[/Quote]

如果这么改的话,编译可以通过。但是接着用这指针来调用成员函数时,提示使用了为定义的类型(也就是FuShiYuPengZhangDib未定义)
  • 打赏
  • 举报
回复
试试:
class FuShiYuPengZhangDib;//类前向声明
.......
FuShiYuPengZhangDib *CDibNew;//再声明指针变量

如果出现一大堆XXX没有定义的错误,可以肯定是FuShiYuPengZhangDib类的头文件没有正确包含
加载更多回复(10)

65,210

社区成员

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

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