QT/c++调用父级方法的最佳方法
QT / c++ best way to call a method of parent
我需要使用类 A 中的方法(称为 write)控制文件 I/O。 然后,A 通过调用 A.write() 来触发另一个需要写入文件的类 B(不基于 A)。
实现这一目标的最佳方法是什么?
我应该将 Class.functionname (A.write) 作为参数传递给 B.sometfunction 进行回调吗?
我应该让 A.write 一个插槽,并允许 B 发出信号吗?
有没有更好的方法? (我正在使用带有C++的QT 5
)好的,一些更多信息可以帮助解释:A 是线程的集合,每个线程都是一个 TcpSocket(来自客户端的控制台会话)B 是我的记录器类,是单例模式。A 线程有时必须将消息记录到文件中,B 使用互斥锁格式化并写入文件。这些相同的(格式化的)消息应写入控制台(每个 A 线程唯一的套接字,因此不能是静态方法)。所以A.something调用B.write(到文件),然后B.write需要调用A.write(到控制台)。
将 A.write() 公开并给出 A 到 B 的指针,或者使用信号/插槽连接,在 B 中只使用 emit mysignal(data); 连接到插槽 A.write()...
使用信号/插槽连接机制B
信号write()
连接到公共A
插槽doWrite()
。或者A::write()
仅公开static
方法,并从B
调用它
void B::write() {
A::write();
//...
}
或者只是将指针或引用传递给类 B
的对象A
,并通过此指针/引用调用公共方法。
void B::write(A& a) {
a.write();
//...
}
作为旁注,请重新考虑您的设计。我相信你自己确实觉得这里有些不对劲。通常,这是在执行该作业的A
中创建的B
实例(是A
的成员)。
class A{
B b;
void write(){
B.write(); // clear
}
};
在你的方法中A
创建一个对象,该对象回调父级来完成工作。
class A{
B b;
void foo(){
B.write(
// hey hey, I want A.write() come back! -> confusing oOO
);
}
};
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 转换/映射方法最佳做法