我正在尝试像类的[]运算符一样实现矢量和地图.但我收到编译器的错误消息(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) 我尝试构建一个用户界面,该界面在每秒刷新数据的同时显示表格的内容。
因此,我有一系列模型:
QSqlTableModel - 访问表格内容QIdentityProxyModel修改了一下数据(来源是TableModel)该链以QTableView. 因为QSqlTableModel每秒刷新一次,所以 TableView 中的任何选择也会每秒删除一次。现在我有两个想法来解决这个问题。
QIdentityProxyModel它不会转发像 modelAboutToBeReset 或 modelReset 或 dataChanged 之类的信号。也不可能从 MyModel 重新发送这些信号,因为它们是私有的。我正在寻找其他方法来解决这些刷新问题,但没有成功。但我无法想象我是第一个使用代理模型链结合周期性模型刷新和选择的人。
谁能给我一些提示?
提前致谢。
也许值得注意:
QSqlTableModel用于许多 TableView。(使用不同的 FilterProxyModel 链。)所以我不能因为一个 View 有一个选择就停止刷新。希望我的问题有意义。
我正在玩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中执行此操作?或者这些教程只是为了涵盖这样一个主题?