我有一个嵌套面板的GUI(带有嵌套面板的标签等).我需要将域对象传递给深层嵌套的面板.我可以想到两种方式:
在一个地方实例化所有gui对象,比如帧类.这将使传递域对象变得简单,但Frame类将是巨大的并且难以管理.
每个面板都有自己的类,我们在其中实例化和布局其
组件.现在它易于维护,类很干净,但是如何
传递我的域对象链呢?我不想通过甚至不知道它们
存在的面板构造器来链接它们.顶级面板将有大量的这些对象开始.
Niether的方式似乎是一种洗礼.你通常如何接受这个?
可能的重复:
依赖地狱 - 如何将依赖关系传递给深度嵌套的对象
最近我一直在为这个特殊问题而苦苦挣扎。出于测试和管理的原因,我认为向需要它的人注入像 $config 这样的对象将是一个更好的选择。虽然一开始还好,但后来就开始污染代码了。例如:对象A使用对象B来完成其工作,对象B使用策略对象C,对象C使用对象D,这需要$config对象。所以,我必须继续将 $config 传递到整个链中
在我的代码中,我有两个这样的对象要传递,这使得构造函数很大,有重复的代码,而且通常味道不对。如果您能帮助重构这种关系,我将不胜感激。
我想使用不同的策略来对矢量进行排序.但我无法弄清楚如何传递子仿函数并在std::sort以后使用它.每当我使用抽象类进行排序策略时,我最终都会cannot allocate an object of abstract type出错.有没有办法使用继承的仿函数作为std::sort参数?谢谢!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class BaseSort{
public:
virtual ~BaseSort() {};
virtual bool operator()(const int& a, const int& b) = 0;
};
class Asc : public BaseSort{
public:
bool operator()(const int& a, const int& b){
return a < b;
}
};
class Desc : public BaseSort{
public:
bool operator()(const int& a, const int& b){
return a > b;
}
};
void print(const vector<int>& …Run Code Online (Sandbox Code Playgroud)