Данные обратного вызова доступа к C++C++

Программы на C++. Форум разработчиков
Anonymous
Данные обратного вызова доступа к C++

Сообщение Anonymous »

Я пытаюсь создать оболочку для функций класса. Цель моей оболочки — тестировать ввод и вывод, а также обеспечивать соблюдение порядка операций с различными вызовами во всей моей программе. Я пытаюсь не вносить никаких изменений в класс вызываемого абонента. Прикреплен пример того, чего я пытаюсь достичь, но не могу понять.
Main.cpp

Код: Выделить всё

#include "func_warpper.h"
#include "func.h"

int main()
{
func_wrapper fw
fun func;
int origValue = 5;
fw.caller([&](int origValue) { func.f(origValue); }, origValue);
int output = func.getResult().number;
std::cout testResult.number = updateValue;
}
func_wrapper.h .... Я могу изменить это, пока коровы не вернутся домой, пожалуйста, внесите рекомендуемые изменения :)

Код: Выделить всё

class func_wrapper
{
public:
struct new_result
{
int new_number;
};
func_wrapper();
~func_wrapper();

void caller(std::function clb, int val);
struct new_result getNewResult() { return this->new_testResult; };
private:
struct new_result new_testResult;
};

#endif
func_wrapper.cpp .... то же, что и выше, я могу изменить это, пока коровы не вернутся домой, пожалуйста, внесите рекомендуемые изменения :)

Код: Выделить всё

#include "func_wrapper.h"

func_wrapper::func_wrapper()
{
//ctor
this->new_testResult.new_number = 0;
return;
}

func_wrapper::~func_wrapper()
{
//dtor
}

void func_wrapper::caller(std::function clb, int val)
{
std::cout  testResult -> number
// would like ...
int output = clb ???  // the result of what gets filled from number struct
// if I attempt to #include func.h
// func func;
// func.getResult().number; locally the answer is zero with or without delay
}
За несколько дней поиска я не нашел ничего, что могло бы помочь с этой проблемой, включая достаточно похожие вопросы о переполнении стека. Любая помощь будет принята с благодарностью, спасибо.

Подробнее здесь: https://stackoverflow.com/questions/715 ... lback-data

Вернуться в «C++»