C++中的struct能不能前导声明?

ty263 2007-02-09 04:42:53
我有一个struct,定义在common.h中:ACE_TString是ACE中类似于std::string的类
struct ACCOUNT
{
ACE_TString user;
int type;

ACCOUNT(){}
ACCOUNT(const char* pszid, int t)
{
user=ACE_TString(pszid);
type=t;
}
}

然后在一个user.h的文件中这样定义一个类:
struct ACCOUNT;
class UserI
{
public:

UserI(ACCOUNT&);
~UserI(void);

::std::string getAppid() const;
}

无法通过编译,报错如下:
error C2226: syntax error : unexpected type 'ACCOUNT'
error C2238: unexpected token(s) preceding ';'

请教这是哪里出了问题?
请教,多谢!!!
...全文
448 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ty263 2008-01-23
  • 打赏
  • 举报
回复
windows下面支持struct的前导声明,*nix下不支持struct前导声明
gameboy007 2007-02-10
  • 打赏
  • 举报
回复
ACCOUNT和UserI是否在同一个名称空间?
llrock 2007-02-10
  • 打赏
  • 举报
回复
wsXiqiang(wsXiqiang) ( ) 信誉:100 Blog 2007-2-9 17:04:05 得分: 0



可以使用,但是只能使用指针,任何需要用到结构内部的情况下都必须有定义!





正解
sarh2onacy 2007-02-10
  • 打赏
  • 举报
回复
同意taodm(taodm) ( ) ,struct和class唯一的区别就是struct中的成员默认是public的。或者说,struct的第一个区是pubulic区而class是private
magicsutra 2007-02-09
  • 打赏
  • 举报
回复
可能是你在UserI中,访问了ACCOUNT的函数或数据,那要求类定义可见。
ty263 2007-02-09
  • 打赏
  • 举报
回复
结尾有分号,
class的前导声明这样写没有问题,struct的有问题,
我用的引用应该和指针一样吧
lidongri 2007-02-09
  • 打赏
  • 举报
回复
struct ACCOUNT
{
ACE_TString user;
int type;

ACCOUNT(){}
ACCOUNT(const char* pszid, int t)
{
user=ACE_TString(pszid);
type=t;
}
};//结尾要加;号
taodm 2007-02-09
  • 打赏
  • 举报
回复
C++里,struct就是class,class就是struct
wsXiqiang 2007-02-09
  • 打赏
  • 举报
回复
可以使用,但是只能使用指针,任何需要用到结构内部的情况下都必须有定义!
qhfu 2007-02-09
  • 打赏
  • 举报
回复
struct ACCOUNT
{
ACE_TString user;
int type;

ACCOUNT(){}
ACCOUNT(const char* pszid, int t)
{
user=ACE_TString(pszid);
type=t;
}
};//一楼说的,,是这里加分号
ty263 2007-02-09
  • 打赏
  • 举报
回复
在class前面的struct ACCOUNT 是前导声明,
实现在common.h中,加括号就错了
yevv 2007-02-09
  • 打赏
  • 举报
回复
类型后边要有分号
struct Type1
{
....
};

class Type2 {...};

64,637

社区成员

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

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