- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试并试图让它工作,但它就是拒绝工作。我阅读了 QT 文档,但无法使插入功能发挥作用。构建时出现以下复杂错误
/home/mmanley/projects/StreamDesk/libstreamdesk/SDDatabase.cpp: In constructor 'SDDatabase::SDDatabase()':
/home/mmanley/projects/StreamDesk/libstreamdesk/SDDatabase.cpp:27:44: error: no matching function for call to 'QHash<QString, SDChatEmbed>::insert(const char [9], SDChatEmbed (&)())'
/usr/include/qt4/QtCore/qhash.h:751:52: note: candidate is: QHash<Key, T>::iterator QHash<Key, T>::insert(const Key&, const T&) [with Key = QString, T = SDChatEmbed]
make[2]: *** [libstreamdesk/CMakeFiles/streamdesk.dir/SDDatabase.cpp.o] Error 1
make[1]: *** [libstreamdesk/CMakeFiles/streamdesk.dir/all] Error 2
这是头文件:
class SDStreamEmbed {
Q_OBJECT
public:
SDStreamEmbed();
SDStreamEmbed(const SDStreamEmbed &other);
QString FriendlyName() const;
SDStreamEmbed &operator=(const SDStreamEmbed &other) {return *this;}
bool operator==(const SDStreamEmbed &other) const {return friendlyName == other.friendlyName;}
private:
QString friendlyName;
};
Q_DECLARE_METATYPE(SDStreamEmbed)
inline uint qHash(const SDStreamEmbed &key) {
return qHash(key.FriendlyName());
}
和实现
SDStreamEmbed::SDStreamEmbed() {
}
SDStreamEmbed::SDStreamEmbed(const SDStreamEmbed& other) {
}
QString SDStreamEmbed::FriendlyName() const {
return friendlyName;
}
以及我是如何调用它的
SDChatEmbed embedTest();
ChatEmbeds.insert("DemoTest", embedTest);
和ChatEmbeds的定义
QHash<QString, SDStreamEmbed> StreamEmbeds;
最佳答案
替换:
SDChatEmbed embedTest();
与:
SDChatEmbed embedTest;
编译器将第一行解释为函数声明。这在错误消息中可见:它为第二个参数推导出以下类型:
SDChatEmbed (&)()
这是一个函数签名。
我认为您不需要明确的 QString
自 QString
以来第一个参数的转换/构造有一个接受 const char*
的构造函数, 以便自动转换。
(有关一些有趣的信息,请参阅 here。)
关于c++ - QHash 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672672/
在我的项目中,我需要几个常量哈希容器,它们在类和函数之外定义,因此是全局的。这样,其中一些容器应该重叠。对于列表,我将执行以下操作以将第二个 const 列表与第一个 const 列表组合: cons
我正在使用 QT 4.8,我注意到它有一个 QHash 类,可以按如下方式使用: QHash hash; hash["one"] = 1; hash["three"] = 3; has
我想从我的 QHash 中得到一个随机对,数字为 n。 现在我这样做: QHash::iterator iterator = dictionary.begin(); iterator+= n; que
我有一个 QHash ,而 MyClass 只是一些带有 getter 和 setter 的 QString quint8 值的集合。 MyClass 还有一个 QDataStream &operat
我一直在尝试并试图让它工作,但它就是拒绝工作。我阅读了 QT 文档,但无法使插入功能发挥作用。构建时出现以下复杂错误 /home/mmanley/projects/StreamDesk/libstre
我需要一个 QHash 容器,它采用 quint8 键,但采用异构类型作为值,所有这些都将是 Qt 容器或类。例如,我可能想插入一个 QDate 或 QTime 对象,甚至 quint8 作为值。 如
是否可以按插入顺序循环 QHash?下面的方法似乎通过一些其他因素循环散列: QHashIterator i(hash); while (i.hasNext()) { i.next();
我是 Qt 的新手,正在学习处理 QHash 的工作原理。在处理这个例子时,我不明白为什么这会给我一个错误。我可能会遗漏一些东西,但请指导我学习这一点。 主要.cpp int main(int arg
我试图找到实现使用多个键返回一个值的类似 QHash 的查找表的最佳方法。我已经读到 Boost 库具有类似的功能,但如果可能,我想避免这种情况。 我想做的一个例子如下(显然下面的伪代码是不可能的):
我想存储从一个类继承的 QHash 元素。所以我有: class ImageInterface { public: ImageInterface(); ImageInterface(c
我想使用 QSet自定义对象。从文档中,我发现: QSet's value data type must be an assignable data type. You cannot, for exa
我有一个QHash > qhash ,并尝试覆盖 QVector 中的值如下: void Coordinate::normalizeHashElements(QHash > qhash) {
我有一个服务器类,它处理 QJsonObject 数据并根据数据中设置的键来处理它。 目前,我使用一个很大的 if-then-else 语句来决定要做什么: const QString action
我有我的代码: for(QHash::iterator i=list.begin();i!=list.end();++i) { long id = QVariant((*i).key()).t
我正在尝试使用 QMutableHashIterator 遍历 QHash 并找到所有重复值,然后将每个重复值的键添加到 QStringList。我以前从未使用过 QHash,也不确定具体如何去做。在
我使用 QHash 作为容器,我有一个任务是删除所有满足谓词的项目。起初我想使用 Erase-remove idiom事实证明,QHash 没有删除范围的选项,只有一个 function。通过迭代器删
我在 C++ 中使用 QHash 来存储一些简单的键值对。在我的例子中,键是一个整数,值也是。要向散列添加新的键/值对,这是我的语法: QHash myhash; int key = 5; int v
我想创建一个 QSet我想在我的程序中使用。 Tag是我的自定义类。 当我构建代码时,我得到关于 qHash 的 gcc 错误重载: Exercise.cpp.o In file included f
我想创建一个带有 QVariants 键的数据结构。它看起来像这样: QHash, SHAPES::Shape* > _shapes; 不幸的是,“没有匹配的函数来调用‘qHash(const QVa
假设一个程序以相同的方式运行多次。在每次运行中,相同的一组对象以相同的插入顺序插入到 QHash 中;然后迭代 QHash 中的对象。问题是在程序的每次运行中对象是否会以相同的顺序迭代? 最佳答案 可
我是一名优秀的程序员,十分优秀!