郁闷啊。这个类的申明错那里了

OnlyHappy 2004-07-22 09:05:48
#ifndef _CREDITSTYLE_H
#define _CREDITSTYLE_H

class CCreditBase;

class CCreditStyle
{
public:
enum emCreditStyle
{
CREDIT_IDENTITY_CARD = 0,
CREDIT_SOLIDER_CARD
};

CCreditStyle(emCreditStyle, DWORD dwCardNum); // 从这里开始出错了。
CCreditStyle(const CCreditStyle & cs);
CCreditStyle();


emCreditStyle m_emCardStyles;
protected:
virtual BOOL CheckNum(DWORD dwNum);


DWORD m_dwCardNum;
CCreditBase *m_pCredit;
};

class CCreditBase
{
public:
virtual ~CCreditBase(){};
virtual BOOL Check() = 0;
void SetCardNum(DWORD dwNum)
{
m_dwCardNum = dwNum;
}
protected:
DWORD m_dwCardNum;
};

class CCreditIDCard : public CCreditBase
{
public:
virtual BOOL Check();

};

class CCreditSolider : public CCreditBase
{
public:
virtual BOOL Check();
};
#endif



...全文
442 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
OnlyHappy 2004-07-22
  • 打赏
  • 举报
回复
thanks
蒋晟 2004-07-22
  • 打赏
  • 举报
回复
CCreditStyle(CCreditStyle::emCreditStyle emCardStyles, DWORD dwCardNum);
icecools 2004-07-22
  • 打赏
  • 举报
回复
没有名字也可以的,后面函数实体的时候有就可以了
北极猩猩 2004-07-22
  • 打赏
  • 举报
回复
CCreditStyle(emCreditStyle, DWORD dwCardNum);
怎么只有参数类型,没有参数名呢
icecools 2004-07-22
  • 打赏
  • 举报
回复
我是说 ekschencn(X)
icecools 2004-07-22
  • 打赏
  • 举报
回复
楼上正解
其实把DWORD换成int什么的就对了,那个没定义
Dong 2004-07-22
  • 打赏
  • 举报
回复
to OnlyHappy(说好不打脸)

enum我不敢肯定,但假如是class就一定不可以,
但想想,他们都是定义新的类型,应该结果都是一样的吧。
ekschencn 2004-07-22
  • 打赏
  • 举报
回复
楼主,试试在class CCreditBase;前加上这两句,看还有错误不:

typedef unsigned long DWORD;
typedef bool BOOL;
OnlyHappy 2004-07-22
  • 打赏
  • 举报
回复
楼上的。你看下MSDN中的有一代码啊
// enumeration_declarations.cpp
class Card
{
public:
enum Suit
{
Diamonds,
Hearts,
Clubs,
Spades
};
// Declare two constructors: a default constructor,
// and a constructor that sets the cardinal and
// suit value of the new card.
Card();
Card( int CardInit, Suit SuitInit );

// Get and Set functions.
int GetCardinal(); // Get cardinal value of card.
int SetCardinal(); // Set cardinal value of card.
Suit GetSuit(); // Get suit of card.
void SetSuit(Suit new_suit); // Set suit of card.
char *NameOf(); // Get string representation of card.
private:
Suit suit;
int cardinalValue;
};

// Define a postfix increment operator for Suit.
inline Card::Suit operator++( Card::Suit &rs, int )
{
return rs = (Card::Suit)(rs + 1);
}

int main()
{
}
Dong 2004-07-22
  • 打赏
  • 举报
回复
enum emCreditStyle
{
CREDIT_IDENTITY_CARD = 0,
CREDIT_SOLIDER_CARD
};

CCreditStyle(emCreditStyle, DWORD dwCardNum);

enum emCreditStyle 是定义在内部的,在外部是看不到的,所以
CCreditStyle(emCreditStyle, DWORD dwCardNum);的定义是错误的,
因为外部根本就没有emCreditStyle这一个类型来的。还怎么传入参数???

你必须把enum emCreditStyle定义外类的外边。

vc6也肯定存在问题的。因为这是类型的事。
freefalcon 2004-07-22
  • 打赏
  • 举报
回复
vc6没有问题
OnlyHappy 2004-07-22
  • 打赏
  • 举报
回复
错误提示

------ 已启动生成: 项目: debug_Credit, 配置: Debug Win32 ------

正在编译...
debug_Credit.cpp
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(15) : error C2226: 语法错误 : 意外的“CCreditStyle::emCreditStyle”类型
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(15) : error C2238: 意外的标记位于“;”之前
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(22) : error C2146: 语法错误 : 缺少“;”(在标识符“CheckNum”的前面)
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(22) : error C2433: “CCreditStyle::BOOL” : 不允许在数据声明中使用“virtual”
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(22) : error C2501: “CCreditStyle::BOOL” : 缺少存储类或类型说明符
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(22) : error C2061: 语法错误 : 标识符“DWORD”
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(22) : warning C4183: “CheckNum”: 缺少返回类型;假定为返回“int”的成员函数
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(25) : error C2146: 语法错误 : 缺少“;”(在标识符“m_dwCardNum”的前面)
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(25) : error C2501: “CCreditStyle::DWORD” : 缺少存储类或类型说明符
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(25) : error C2501: “CCreditStyle::m_dwCardNum” : 缺少存储类或类型说明符
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(33) : error C2146: 语法错误 : 缺少“;”(在标识符“Check”的前面)
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(33) : error C2433: “CCreditBase::BOOL” : 不允许在数据声明中使用“virtual”
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(33) : error C2501: “CCreditBase::BOOL” : 缺少存储类或类型说明符
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(33) : warning C4183: “Check”: 缺少返回类型;假定为返回“int”的成员函数
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(34) : error C2061: 语法错误 : 标识符“DWORD”
g:\My Documents\Visual Studio Projects\my projects7\tmp\CreditStyle.h(39) : error C2146: 语法错误 : 缺少“;”(在标识符“m_dwCardNum”的前面)

64,654

社区成员

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

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