0
rpgゲームで、条件がtrueかfalseを返すかどうかを調べるための "条件"クラスを作成しようとしています。C++:std :: functionsを宣言する方法を教えてください。
私はそこになります(これらの各々のための新しいメンバ関数を作成せずに、この関数を作成する方法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.
}
質問があり、おそらく200以上の関数)
書くことができます
functions.push_back([this]
{
if (GameInfo::player.gold > 200) return true;
else return false;
});
あなたが実際に機能してConditions
のいずれかのメンバーにアクセスする必要がない場合は、あなたも完全this
キャプチャを削除することができます:あなたはおそらくlambdasを探している
functions.push_back(
{
if(GameInfo::player.gold>200) return true;
else return false;
}
);
はい、あなたの答えの編集版は私の使用にはるかに良く合います。私は条件クラス内のすべてを静的に変更することにしました。静的に使用できないため、エラーが発生していました。どうもありがとう。 –