请看如下代码:-------------------------------------------------------------------------
m_movebar.hclass M_MoveBar
{
private:
char Alpha;         //透明值
WORD Color_Key;     //透明色
//char *strText=NULL; //显示的文字
int x,y,high,wide;  //坐标,高度,宽度
int DestX,DestY;    //目的地 X,Y
int Step;           //移动步长
int StepX,StepY;    //移动方向
int Number;         //显示序号
bool IsInit;        //是否已初始化
BOOL IsOk;          //移动是否完成
LPDIRECTDRAWSURFACE lpDDSBackSurface;  //指向绘图表面的指针
    LPDIRECTDRAWSURFACE lpDDSPic[3];       //图像
CGFont barfont(true);   //<---CGFont 为字体类
                             //~~~~~~~~~~~~~~~~~~~~
public:... ...
-------------------------------------------------------------------------
m_movebar.cpp... ...//初始化字体
void M_MoveBar::InitFont(int i,char *c)
{
  barfont.InitFont(16,"宋体");
}... ...
-------------------------------------------------------------------------报错:
正在编译...
M_MoveBar.cpp
MLib\M_MoveBar.cpp(120) : error C2228: “.InitFont”的左侧必须有类/结构/联合类型-------------------------------------------------------------------------这是怎么回事啊~~ 有谁知道?在线等待中...

解决方案 »

  1.   

    头文件中CGFont barfont(true);   写错了,barfont成了成员函数了
      

  2.   

    说错了,还不是成员函数,这句根本就不对。应该为CGFont barfont;
      

  3.   

    CGFont 的头文件已经包含了。 blackblue(跌跌撞撞) :能说具体一些吗?
      

  4.   

    CGFont barfont(true); 
    变量声明时不用这种形式吧
    CGFont barfont;      //这样就可以了。
      

  5.   

    如果定义时要加参数怎么办呢? 如:CGFont barfont(true);
      

  6.   

    在构造函数中M_MoveBar::M_MoveBar() : barfont(true)
    {
    ...
    }
      

  7.   

    如果定义时要加参数CGFont barfont(true);那么最好在类的初始化函数中M_MoveBar::M_MoveBar中的初始化表中加初始化。
    即:M_MoveBar::M_MoveBar():barfont(true){...其他初始化...}
      

  8.   

    用指针,
    CGFont *barfont;
    在.cpp文件中用
    barfont=new CGFont(true);  //即可
      

  9.   

    头文件中CGFont barfont(true);
    成员变量定义时,不能初始化。
    blackblue(跌跌撞撞)所说,编译器把它当成函数的定义了。