小编r2p*_*2p2的帖子

"运算符[]'的模糊重载"如果存在转换运算符到int

我正在尝试像类的[]运算符一样实现矢量和地图.但我收到编译器的错误消息(g ++和clang ++).发现只有当类还将转换运算符转换为整数类型时才会出现它们.

现在我有两个问题.首先是我不知道为什么编译器无法区分[](const std :: string&)以及类何时将转换运算符转换为int.第二个......我需要转换和索引运算符.有谁知道如何解决这个问题?

在此先感谢并向我致以最诚挚的问候

作品:

#include <stdint.h>
#include <string>

struct Foo
{
    Foo& operator[](const std::string &foo) {}
    Foo& operator[](size_t index) {}
};

int main()
{
    Foo f;
    f["foo"];
    f[2];
}
Run Code Online (Sandbox Code Playgroud)

不起作用:

#include <stdint.h>
#include <string>

struct Foo
{
    operator uint32_t() {}
    Foo& operator[](const std::string &foo) {}
    Foo& operator[](size_t index) {}
};

int main()
{
    Foo f;
    f["foo"];
    f[2];
}
Run Code Online (Sandbox Code Playgroud)

编译器错误:

main.cpp: In function 'int main()':
main.cpp:14:9: error: ambiguous overload for 'operator[]' in 'f["foo"]'
main.cpp:14:9: note: candidates …
Run Code Online (Sandbox Code Playgroud)

c++

14
推荐指数
1
解决办法
2752
查看次数

QTableView 在模型刷新后保留选择

我尝试构建一个用户界面,该界面在每秒刷新数据的同时显示表格的内容。

因此,我有一系列模型:

  • QSqlTableModel - 访问表格内容
  • MyModel - 继承自QIdentityProxyModel修改了一下数据(来源是TableModel)
  • SomeFilterModels - 以 MyModel 作为源

该链以QTableView. 因为QSqlTableModel每秒刷新一次,所以 TableView 中的任何选择也会每秒删除一次。现在我有两个想法来解决这个问题。

  1. 防止 TableModel 检测更改。这不是很好。
  2. 捕捉在模型即将更改之前和之后触发的一些事件以存储和恢复当前选择。可悲的是,QIdentityProxyModel它不会转发像 modelAboutToBeReset 或 modelReset 或 dataChanged 之类的信号。也不可能从 MyModel 重新发送这些信号,因为它们是私有的。

我正在寻找其他方法来解决这些刷新问题,但没有成功。但我无法想象我是第一个使用代理模型链结合周期性模型刷新和选择的人。

谁能给我一些提示?

提前致谢。

也许值得注意:

  • 一种QSqlTableModel用于许多 TableView。(使用不同的 FilterProxyModel 链。)所以我不能因为一个 View 有一个选择就停止刷新。
  • 当我调用模型刷新方法时,您可能认为我知道。但是现在通过我的 ui 架构来传递这个有点复杂。我的意思是模型已更新,并且 TableView 已经通过一些 ProxyModel 连接到更新的模型。应该不需要其他通信方式。

希望我的问题有意义。

c++ qt qt4 qtsql

5
推荐指数
1
解决办法
2106
查看次数

基于Actor的类,有或没有接口

我正在玩Scala,并试图找出一些关于如何设计类的最佳实践.(一周左右尝试Scala.)

自从我的Erlang时间以来,我是消息传递和基于演员的软件的忠实粉丝.在大多数Scala示例中,actor类的实现方式如下:

object Foo
object Bar
class MyActor extends Actor {
  def receive = {
    case Foo => ...
    case Bar => ...
    case _ => ...
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我从面向对象(接口和多态)载体中学到的东西告诉我这个概念不是很灵活.

MyActor可以被MyAdvancedActor取代,但是没有合约定义MyActor实现需要实现哪些消息.

当我考虑在Scala中编写Actors时,我倾向于编写一个指定某些方法的特征.MyActor实现需要实现此方法,其中可以将自己的私有消息发送给自己.使用这种方法,我们有一个指定的接口,可以以类型安全的方式替换MyActor实现.

在我阅读scala教程和示例的时候,我没有遇到过这样的课程设计.这不是常识,还是有更好的方法在Scala中执行此操作?或者这些教程只是为了涵盖这样一个主题?

class-design scala actor akka

3
推荐指数
1
解决办法
447
查看次数

标签 统计

c++ ×2

actor ×1

akka ×1

class-design ×1

qt ×1

qt4 ×1

qtsql ×1

scala ×1