【问题标题】:Expression must have a class type Error 153 [duplicate]表达式必须具有类类型错误 153 [重复]
【发布时间】:2017-07-28 08:07:30
【问题描述】:

此代码用于 mbed 上的 7 段显示,我收到错误提示

错误:表达式必须在“main.cpp”中具有类类型,行:44,列:6

这是seg_7.write(livewrite)的那一行;

我尝试了不同的语法,这似乎是正确的解决方案,但它不起作用?另外,当我在 seg_7.write(livewrite); 中更改写入时对于其他任何东西,它都会给出同样的错误,导致我认为它的语法。

-------图书馆--------------

    class ShiftReg {
    public :

        ShiftReg();    
        ~ShiftReg();
        void write(int data);

    private :
        DigitalOut *clkout;
        DigitalOut *dataout;
        DigitalOut *latchout;
};

ShiftReg seg_7();    

void refresh()
{
    char livewrite = hex_nums[lives];
    seg_7.write(livewrite);
    lcd.clear();
    drawsprite(hx,hy,HeroX,HeroY,hero);
    lcd.refresh();

}

【问题讨论】:

  • ShiftReg seg_7(); 是函数声明,而不是变量声明。

标签: c++ most-vexing-parse


【解决方案1】:

正如你所声明的那样:

ShiftReg seg_7();    

seg_7 是一个不带参数并返回ShiftReg 的函数的原型,而不是ShiftReg 类型的对象。不需要括号,只需:

ShiftReg seg_7;

将解决问题。

【讨论】:

  • 这个问题肯定有无数次重复。
  • 哦,这真是个愚蠢的错误 XD 谢谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多