gpt4 book ai didi

c++ - "Expression must have class type"错误

转载 作者:行者123 更新时间:2023-11-30 02:58:20 24 4
gpt4 key购买 nike

我正在为嵌入式微 Controller 编写我的小触摸屏代码。我让我的代码使用函数工作。但是现在我想把它变成一个类。我得到一个错误:

expression must have class type.

我不知道问题出在哪里。我用谷歌搜索了我的问题,但没有找到明确的解决方案。这是我的代码:

主要.cpp

#include "screen.h"
#include "mbed.h"
#include "stdio.h"

screen test();

int main(void)
{

while (1)
{
test.button(50,70,100,50,"button1"); // line where the compiler sees an error
}
}

屏幕.h

class screen{

public:

screen();

void init();
void button(int, int, int, int, string);

private:
int runningstatus; // 0 = stopped // 1 = failure // 2 = running
point p;


};

屏幕.cpp

#include "screen.h"

touch_tft TFT(p20,p18,p17,p16,p5, p6, p7, p8, p15,"TFT"); // x+,x-,y+,y-,mosi, miso, sclk, cs, reset


screen::screen(){


}

void screen::init()
{
TFT.claim(stdout); // send stdout to the TFT display
TFT.background(Black); // set background to black
TFT.foreground(White); // set chars to white
TFT.cls(); // clear the screen
TFT.set_orientation(3);
TFT.set_font((unsigned char*) Arial24x23);
TFT.locate(60, 100);
}

void screen::button(int x0, int y0, int length, int height, string caption)
{
TFT.rect(x0 ,y0 ,x0+length ,y0+height, LightGrey);
TFT.rect(x0-1 ,y0-1 ,x0+length+1 ,y0+height+1, LightGrey);
TFT.fillrect(x0-2,y0-2 ,x0+length-1 ,y0+height-1, Navy);

TFT.locate(x0+10, y0+10);

TFT.background(Navy);
TFT.printf("%s", caption);
}

谁能告诉我这段代码有什么问题。这让我完全发疯了!

最佳答案

您需要将:screen test(); 更改为 screen test;。现在,您正在声明一个名为 test 的函数,该函数返回一个 screen,而不是定义一个名为 test 的类型为 的对象>屏幕

这被称为 C++ 的“最令人烦恼的解析”(如果您想了解更多信息,这是一个很好的搜索词)。

关于c++ - "Expression must have class type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com