读书人

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

发布时间: 2012-03-09 16:54:57 作者: rapoo

C++中的struct能不能前导声明?
我有一个struct,定义在common.h中:ACE_TString是ACE中类似于std::string的类
struct ACCOUNT
{
ACE_TStringuser;
inttype;

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 '; '

请教这是哪里出了问题?
请教,多谢!!!

[解决办法]
类型后边要有分号
struct Type1
{
....
};

class Type2 {...};
[解决办法]
struct ACCOUNT
{
ACE_TStringuser;
inttype;

ACCOUNT(){}
ACCOUNT(const char* pszid, int t)
{
user=ACE_TString(pszid);
type=t;
}
};//一楼说的,,是这里加分号
[解决办法]
可以使用,但是只能使用指针,任何需要用到结构内部的情况下都必须有定义!
[解决办法]
struct ACCOUNT
{
ACE_TStringuser;
inttype;

ACCOUNT(){}
ACCOUNT(const char* pszid, int t)
{
user=ACE_TString(pszid);
type=t;
}
};//结尾要加;号

读书人网 >C++

热点推荐