Ich versuche eine "Bedingungen" -Klasse zu schreiben, um zu überprüfen, ob eine gegebene Bedingung in einem RPG-Spiel wahr oder falsch ist.C++: Wie deklariere ich std :: -Funktionen, ohne Member-Funktionen zu erstellen
Conditions.h
#pragma once
#include <functional>
#include <vector>
#include <iostream>
class Conditions
{
public:
bool check(int i);
void initialize();
private:
std::vector<std::function<bool()>> functions;
};
Conditions.cpp
bool Conditions::check(int i)
{
if (i >= functions.size())
{
std::cout << "Conditions::functions's size is " << functions.size() << " but you've tried to enter: " << i << std::endl;
return false;
}
else
{
return functions[i]();
}
}
void Conditions::initialize()
{
//Here I want to initialize all the conditions manually and push them
//into functions member variable.
}
die Frage ist, wie ich diese Funktionen erstellen können, ohne für jeden von ihnen neue Elementfunktionen zu schaffen (es wird höchstwahrscheinlich mehr als 200 Funktionen)
ist es möglich zu schreiben so etwas wie:
functions.push_back(
{
if(GameInfo::player.gold>200) return true;
else return false;
}
);
ja, bearbeitete Version Ihrer Antwort passt viel besser zu meiner Verwendung. Ich entschied mich, alles in der Klasse "states" in "static" zu ändern, also gab [mir] Fehler, da es nicht mit static verwendet werden kann. Danke vielmals. –