ExpressionController.h:
#pragma once
#include <vector>
#include <string>
#include "Value.h"
class ExpressionController {
private:
std::vector<Value(*)(std::vector<std::string>)> functions;
void registerFunction(Value(*f)(std::vector<std::string>));
Value intEval(std::vector<std::string>);
Value doubleEval(std::vector<std::string>);
Value stringEval(std::vector<std::string>);
public:
Value run(int, std::vector<std::string>);
void init();
};
ExpressionController.cpp:
#include "ExpressionController.h"
Value ExpressionController::intEval(std::vector<std::string> params) {
return Value(params[0], 0);
}
Value ExpressionController::doubleEval(std::vector<std::string> params) {
return Value(params[0], 1);
}
Value ExpressionController::stringEval(std::vector<std::string> params) {
return Value(params[0], 2);
}
void ExpressionController::registerFunction(Value(*f)(std::vector<std::string>)) {
functions.push_back(f);
}
Value ExpressionController::run(int number, std::vector<std::string> args) {
return functions[number](args);
}
void ExpressionController::init() {
//registerFunction(intEval);
//registerFunction(doubleEval);
//registerFunction(stringEval);
}
При вызове трех последних закоментированных функций, появляется такая ошибка:
Аргумент типа Value(ExpressionController::*)(std::vector<std::string, std::allocator<std::string>> params)
не совместим с параметром типа Value(*)(std::vector<std::string, std::allocator<std::string>>)
В чем ошибка? Заранее спасибо
Проблема решена посредством вынесения данных трех методов, за пределы класса. Может быть кому-нибудь будет полезно:
ExpressionController.h:
#include <vector>
#include <string>
#include "Value.h"
class ExpressionController {
private:
std::vector<Value(*)(std::vector<std::string>)> functions;
void registerFunction(Value(*f)(std::vector<std::string>));
public:
Value run(int, std::vector<std::string>);
void init();
};
ExpressionController.cpp:
#include "ExpressionController.h"
Value intEval(std::vector<std::string> params) {
return Value(params[0], 0);
}
Value doubleEval(std::vector<std::string> params) {
return Value(params[0], 1);
}
Value stringEval(std::vector<std::string> params) {
return Value(params[0], 2);
}
void ExpressionController::registerFunction(Value(*f)(std::vector<std::string>)) {
functions.push_back(f);
}
Value ExpressionController::run(int number, std::vector<std::string> args) {
return functions[number](args);
}
void ExpressionController::init() {
registerFunction(intEval);
registerFunction(doubleEval);
registerFunction(stringEval);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишет Предупреждение C26495 Variable 'Mat::temp' is uninitializedAlways initialize a member variable (type
Имеется сервер и видео на немБэкенд представлен библиотекой Flask на Python