2014-05-15 1 views
0

을 정의없이 LCD :스토어 내가이 클래스 내가 만드는 중이라서 한

class SerialLoad { 
    public: 
     SerialLoad(int line, int total, LiquidCrystal_I2C lcd); 
     void increment(); 
     void print(); 
     void clearLine(); 
    private: 
     int line; 
     int current; 
     int total; 
     int percent; 
     LiquidCrystal_I2C lcd; 
}; 

을 그리고 당신은 내가 다른 곳에서 생성됩니다 액정에 전달하려는 볼 수 있지만, 여기 나에게 오류를주고있다 왜냐하면 나는 "LiquidCrystal_I2C lcd;"할 수 없기 때문이다. 새로운 것을 만들지 않고. 이 문제를 해결하려면 어떻게해야합니까?

내가 그냥 ... 여기

하나를 통과되고 싶은 것은 오류가 나는 얻을 :

C:\Users\Josh\Documents\Arduino\libraries\SerialLoad\SerialLoad.cpp: In constructor 'SerialLoad::SerialLoad(int, int, LiquidCrystal_I2C)': 
C:\Users\Josh\Documents\Arduino\libraries\SerialLoad\SerialLoad.cpp:5: error: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C()' 
C:\Users\Josh\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:93: note: candidates are: LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, t_backlighPol) 
C:\Users\Josh\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:89: note:     LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t) 
C:\Users\Josh\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:70: note:     LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, t_backlighPol) 
C:\Users\Josh\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:67: note:     LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t, uint8_t) 
C:\Users\Josh\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:53: note:     LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol) 
C:\Users\Josh\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:51: note:     LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t) 
C:\Users\Josh\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:39: note:     LiquidCrystal_I2C::LiquidCrystal_I2C(const LiquidCrystal_I2C&) 
+0

참조 또는 포인터 사용 –

답변

0

귀하의 질문은 정말 아두 이노 매우에만있는 것이 아니라 오히려 매우 일반적이다 C + + 질문. 클래스 외부에서 생성 된 개체를 저장하려면 다음과 같이하십시오. 당신은 당신이 그에 따라 상황을 타개와의 멤버로 포인터를 할당해야 클래스의 생성자에서

LiquidCrystal_I2C *lcd; 

을해야하므로 오히려

LiquidCrystal_I2C lcd; 

을하는 것보다, 객체에 대한 포인터를 저장하여 수업.

SerialLoad(int line, int total, LiquidCrystal_I2C *outsideLcd) 
{ 
    lcd = outsideLcd; 
} 

의견의 또 다른 몇

: 당신이 LiquidCrystal_I2C 개체를 만드는 방법에 따라 , 당신은 클래스에 다르게 전달해야합니다. 당신이

LiquidCrystal_I2C lcd; 

을 할 경우

당신은 당신이 당신의 생성자에 lcd 객체의 주소를 전달하는 것을 의미합니다

SerialLoad s([other variables here], &lcd); 

을해야한다. 당신은 당신이 당신의 클래스에서 사용을 중지하기 전에 당신이 클래스의 외부를 만들 LiquidCrystal_I2C가 파괴되지 않도록되어 있는지 확인해야하는 LiquidCrystal_I2Cnew와 함께, 당신은 간단하게 할 수있는

SerialLoad s([other variables here], lcd); 

한 가지를 만드는 경우 그렇지 않으면 수업 내에서 코드에 액세스하려고 할 때 코드가 충돌합니다.

도움이 될지 알려주세요. 처음에 말했듯이, 이것은 아두 이노 특유의 것이 아니라 순수한 C++입니다.

관련 문제