gpt4 book ai didi

c++ - 排序可视化——如何解决循环依赖?

转载 作者:行者123 更新时间:2023-12-01 23:16:52 25 4
gpt4 key购买 nike

我正在编写排序可视化。我希望它在算法运行时处理事件和更新屏幕。我有一个具有 SortContext 属性的 Controller 类。我希望 SortContext 的排序方法引用 Controller ,以便它可以使用方法 updateisAppRunning 但我收到一个错误:

Controller has not been declared

我怎样才能让它发挥作用?

Controller.hpp

class Controller {

private:
SortContext context;
View view;
std::vector<Sortable> data;

bool algorithmRunning = false;

void handleEvents();

public:
Controller();
void update();
bool isAppRunning();
};

SortContext.hpp

class SortContext {

private:
std::unique_ptr<SortStrategy> strategy;
static const std::vector<std::function<std::unique_ptr<SortStrategy>(void)>> algorithms;

public:
void chooseStrategy(int algorithmId);
void sort(std::vector<Sortable> &data, Controller &controller);
};

最佳答案

SortContext.hpp 中转发声明 Controller 类并在 Controller.hpp 中包含 SortContext.hpp:

#include "SortContext.hpp"

class Controller {

private:
SortContext context;
View view;
std::vector<Sortable> data;

bool algorithmRunning = false;

void handleEvents();

public:
Controller();
void update();
bool isAppRunning();
};
class Controller;

class SortContext {

private:
std::unique_ptr<SortStrategy> strategy;
static const std::vector<std::function<std::unique_ptr<SortStrategy>(void)>> algorithms;

public:
void chooseStrategy(int algorithmId);
void sort(std::vector<Sortable> &data, Controller &controller);
};

不要在包含 Controller.hpp 的地方包含 SortContext.hpp 否则会出现重定义错误:

#include "Controller.hpp"

int main()
{
// use your classes
}

在这里你可以看到一个live demo

关于c++ - 排序可视化——如何解决循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68691800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com