2017-05-04 118 views
1

我正在試圖在我創建的庫中使用Servo.h。編譯器一直給我提供相同的錯誤,就好像它不能識別包含在我的庫中的類。Arduino:如何使用其他類的對象作爲我的庫的參數?

我想創建一個新類,它的一個屬性是一個伺服對象,我應該在構造函數中傳遞它。不管我如何努力,我不斷收到同樣的錯誤信息試圖編譯我的草圖時:

In file included from /home/nezah/Arduino/My sketches/CameraShutter/CameraShutter.ino:8:0: /home/nezah/Arduino/libraries/Shutter/Shutter.h:13:19: error: expected ')' before '*' token Shutter(Servo *servo);

看來,包括語句是好的,因爲我得到了不同的消息,如果我惹它出問題或完全刪除它。我已嘗試更改「」爲<>,甚至將源複製到文件夾中並使用完整路徑。只要我不把它弄糊塗(故意)就沒有改變。我已經閱讀this

我也試過將它作爲指針,使用Shutter(Servo* servo),Shutter(Servo *servo)Shutter(Servo& servo)。相同的錯誤消息。

在一些arduino.cc論壇上,我讀到我寧願忘記它,並避免在其他庫中使用庫,但我敢打賭,這是可能的。

有沒有人這麼好心給我如何做到這一點一些提示?

我離開你我的.h和我想寫(其中,順便說一下,變成一個伺服到一個物理按鍵壓但突發能力)的庫的.cpp的一部分。

/* 
* Shutter.h - Library to make a photocamera shutter out of a servo 
* alternatively it could press any physical button with a servo. 
*/ 

#ifndef Shutter 
#define Shutter 
#include "Servo.h" 

class Shutter { 
    public: 
    Shutter(Servo *servo); 
    Servo getServo(); 

    void shut(); 
    private: 
    Servo _servo;   
} 

#endif 

這裏是我的.cpp:

/* 
    Shutter.cpp - Library for flashing Shutter code. 
    Created by David A. Mellis, November 2, 2007. 
    Released into the public domain. 
*/ 

#include <Arduino.h> 
#include "Servo.h" 
#include "Shutter.h" 

Shutter::Shutter(Servo *servo) { 
    _servo = servo; 
} 

注意:如果我刪除了一些代碼,並帶走構造的「伺服」的一部分,我上「getServo的錯誤信息( )「代碼。這個問題似乎是編譯器不能將「Servo」識別爲我的庫中的有效類型。

在此先感謝!

回答

0

在你的類的構造函數中傳遞了一個類型爲Servo的指針,所以你必須將該值存儲在另一個指針中。要做到這一點,你必須改變:

的* .h

#ifndef SHUTTER_H 
#define SHUTTER_H 
#include "Servo.h" 

class Shutter { 
    public: 
    Shutter(Servo *servo); 
    Servo *getServo() const; 

    void shut(); 
    private: 
    Servo *_servo;   
} 

#endif 

*的.cpp

Shutter::Shutter(Servo *servo) { 
    _servo = servo; 
} 


Servo *Shutter::getServo() const 
{ 
    return _servo; 
} 

用途:

Servo servo; 
Shutter shuter(&servo) 
+0

首先,非常感謝您的幫助!我想你告訴我,但仍然得到同樣的錯誤信息:'在文件從/家/ nezah/Arduino的/我的素描/ CameraShutter/CameraShutter.ino包括:1:0: /家庭/ nezah/Arduino的/庫/快門/ Shutter.h:12:19:錯誤:預期 ')' 前 '*' 標記 快門(伺服*伺服);'。我會問:有什麼我必須做的IDE到包括圖書館伺服?我以前在草圖中使用過,但在圖書館中沒有。 – nezah

+0

如果我的回答對您有幫助,請將其標記爲正確。 – eyllanesc

+0

您的回答幫助我糾正了代碼,這是一團糟,但並沒有真正解決問題。無論如何,給我提示找到解決辦法,我想。再次感謝!! – nezah

相關問題