İki motoru kontrol etmek için çok basit bir Arduino sınıfı yazıyorum. Arduino Sınıf Oluşturucum neden bir argüman gerektiriyor?
benim başlık dosyası Motor.h içine basit bir sınıf tanımı var: benim ana kütüphane dosyası, Motor.cpp yılındaclass Motor
{
public:
Motor();
void left(int speed);
void right(int speed);
void setupRight(int rightSpeed_pin, int rightDirection_pin);
void setupLeft(int leftSpeed_pin, int leftDirection_pin);
private:
int _rightMotorSpeedPin;
int _rightMotorDirectionPin;
int _leftMotorSpeedPin;
int _leftMotorDirectionPin;
};
, aşağıdaki Sınıf yapıcı vardır:
Motor::Motor() {
// Intentionally do nothing.
}
Sınıfımı birincil programımda başlatmayı denedim:
Aşağıdakileri alıyorum: derleme hatası:
MotorClassExample.ino: In function 'void setup()':
MotorClassExample:7: error: request for member 'setupRight' in 'motor', which is of non-class type 'Motor()'
MotorClassExample:8: error: request for member 'setupLeft' in 'motor', which is of non-class type 'Motor()'
request for member 'setupRight' in 'motor', which is of non-class type 'Motor()'
şaşırtıcı bir parçası olduğunu böyle Motorlu Sınıf kurucusuna hatta bir çöp, ıskarta argüman eklerseniz:
class Motor
{
public:
Motor(int garbage);
...
Ve .cpp dosyasında:
Motor::Motor(int garbage) { }
Ve benim ana dosyasında:
Motor motor(1);
Her şey şikayet olmadan mükemmel çalışır. Arduino forumlarında biraz araştırma yaptım, ancak bu garip davranışları açıklayacak hiçbir şey bulamadım. Sınıf kurucusu neden bir argüman gerektiriyor? Bu, AVR'ye ya da başka bir şeye bağlı tuhaf bir kalıntı mı?
vardır. Ne garip bir böcek. Bir ton teşekkürler. –