2012-12-05 85 views
1

我正在为嵌入式微控制器使用我的小触摸屏代码。我让我的代码使用函数工作。但现在我想把它变成一个班级。我得到一个错误:“表达式必须具有类型”错误

expression must have class type.

而且我不知道问题是什么。我搜索了我的问题,没有找到明确的解决方案。这里是我的代码:

的main.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 
     } 
    } 

screen.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; 


}; 

screen.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); 
} 

有人能告诉我这个代码是什么问题。它让我疯狂!

+0

offcourse!你的权利!该死的,即时通讯如此愚蠢,没有发现自己..总facepalm在这里!再次,谢谢! –

+1

哈哈,你应该回答我的问题(不是明智的评论),所以其他有类似问题的人也可以找到他们的答案(如果我为自己说话,我大多只会阅读本网站上的答案,而不是评论 –

+0

@ JerryCoffin:你应该将其作为回答。 –

回答

3

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

这是C++的“最令人头痛的解析”(一个很好的术语来搜索是否需要更多信息)。

相关问题