Ich habe eine Klasse, in der ich eine Funktion brauche, die ich pro Objekt definieren kann. Ich möchte in der Lage sein, die spezifische Funktion jedes Objekts zu definieren, während ich einen Vektor dieser Objekte definiere. Diese Vektoren meines Objekts werden Teil einer Bibliothek sein. Hier ist ein erfolgloser Beispiel dafür, was ich zu tun versucht:Definieren von Memberfuntion beim Konstruieren eines Objekts
#include <iostream>
#include <vector>
class FunctionEater {
public:
virtual double func() {}
FunctionEater(double (*Func)) {
func = Func; // Not sure of the correct syntax here
}
};
std::vector<FunctionEater> gorgers {
{
double() { // Not sure of the syntax here, or if there is even syntax to do this
double result = 0.794 * 739.775;
return result;
}
},
{
double() {
double temp1 = 0.794 * 739.775;
double result = temp1 + 0.62;
return result;
}
}
}
int main()
{
double snackCrumbs = gorgers[0].func();
double gorgePoop = gorgers[1].func();
std::cout << snackCrumbs << std::endl << gorgePoop << std::endl;
}
So sind die beiden Dinge, die ich bin zu kämpfen, um herauszufinden, oder viel Dokumentation über, sind wie folgt:
- Wie die Funktion zu definieren, während die Elemente gorgers []
- definiert, wie die Funktion, die ich an den Konstruktor als (* Func), und speichern sie es als virtuelle Doppel func()
bestanden haben, akzeptieren, Ich würde es vorziehen, die Funktion innerhalb der Objektdefinition definieren zu können. Ich habe ziemlich viel Zeit damit verbracht, herauszufinden, wie ich meinen Vektor von Objekten am besten schreiben kann, und die Art und Weise, wie in dieser Situation am einfachsten zu arbeiten ist, scheint jeden Aspekt eines jeden Objekts in einem Block zu definieren, während der Vektor sie sind in enthalten.
Ich gebe zu, ich weiß auch nicht, ob (* Func) ist richtig, während Sie eine virtuelle Funktion verwenden, aber das ist eine Anpassung von meinem ersten Versuch mit Funktionszeiger. Gerne nehme ich auch alternative Vorschläge an, die besser funktionieren als die Methode, die ich verwenden möchte.
Vielen Dank im Voraus für jede Hilfe, die Sie anbieten können, und ich bin glücklich, meine Frage zu bearbeiten oder zu aktualisieren, wenn nötig.
Pete
'std :: funktion'? Überprüfen Sie die Beispiele hier: http://en.cppreference.com/w/cpp/utility/functional/function –
Von Ihrem Beispiel benötigen Sie keine Funktion, nur doppelte konstante Variable. – Jarod42
@ Jarod42 wo brauche ich nur eine const doppelte Variable? –