Hallo,
ich bin dabei eine Lib zu schreiben mit Auftrennung in .h und .cpp. Ich weiß nicht wie ich ein Objekt einer fremden Lib darin instanziere. In meiner vorherigen Header only Lib ging das ohne Probleme. Es geht um die MoToServo Lib und das erstellte Objekt servo. Falls das wichtig ist, die Lib MoToServo ist Header only.
Meine alte Header only Lib sieht so aus. Funktioniert.
class WeichenServo
{
private:
const byte pin;
const byte winkelGerade;
const byte winkelAbzweig;
const byte servoSpeed;
unsigned long timeEndposition;
MoToServo servo; // <<-- darum gehts
...
...
public:
WeichenServo(byte p, byte wG, byte wA, byte sp):
pin {p},
winkelGerade {wG},
winkelAbzweig {wA},
servoSpeed {sp},
timeEndposition {0}
{}
void init (void) {
...
}
Die .h meiner neuen Lib sieht aktuell so aus.
#pragma once
#include <Arduino.h>
#include <utilities/MoToServo.h>
class WeichenServo
{
private:
const byte pin;
const byte winkelGerade;
const byte winkelAbzweig;
const byte servoSpeed;
unsigned long timeEndposition;
public:
WeichenServo(byte p, byte wG, byte wA, byte sp);
void init (void);
};
Die .cpp sieht so aus.
#include "WeichenServo.h"
#include <utilities/MoToServo.h>
WeichenServo::WeichenServo(byte p, byte wG, byte wA, byte sp):
pin {p},
winkelGerade {wG},
winkelAbzweig {wA},
servoSpeed {sp},
timeEndposition {0}
{}
void WeichenServo::init (void)
{
pinMode(pin, OUTPUT);
//servo.attach(pin);
//servo.setSpeed(servoSpeed);
//servo.write(winkelAbzweig);
}
Das servo Objekt soll nicht nach außen sichtbar sein. Wird nur intern benötigt. Nur die Pin Nummer wird von außen übergeben. Nur wo und wie erstelle ich das servo Objekt von MotToServo? Alle Bsp. die ich finde verwenden Header only. Hilft mir nicht, hab ich schon. Ideen? Ich bekomme das nicht hin. Entweder undefinierte Referenz oder One Rule Verletzung. Ich drehe mich in Kreis. Wie wirds gemacht?