作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#include <QMultiMap>
template <typename TKey, typename TValue>
TKey lastKeyOf(const QMap<TKey, TValue>& map)
{
if (map.isEmpty())
throw something;
return (map.end() - 1).key();
}
我问的原因是:
template <typename TKey, typename TValue>
QMultiMap<TKey, TValue>;
继承QMap<TKey, TValue>
公开地。所以如果我打电话:
QMultiMap<int, std::string> multimap;
...
lastKeyOf(multimap);
lastKeyOf
里面的所有调用静态绑定(bind)到他们的 QMap
版本而不是 QMultiMap
版本,自QMap
不适合多态使用(无虚拟析构函数)。
我什至不确定这个用途叫什么。是对象切片吗?
最佳答案
我相信这应该是安全的。 QMultiMap 只是向 QMap 添加了一组新的重载方法,如果您在 lastKeyOf() 中使用一个函数,而该函数在 QMultiMap 中被重载以具有不同的行为,您只会得到意想不到的结果。我能看到的唯一具有兼容签名和不同行为的重载方法是 insert()。
话虽如此,它可能会产生更直接的代码来避免 QMultiMap 并仅将 QMap 与 QMap::insertMulti() 而不是 QMap::insert() 一起使用。
关于c++ - QMap 的这种使用可能有害吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16651683/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我在摆弄 LinqToSQL 和 LINQPad,我注意到 SingleOrDefault() 没有对生成的 SQL 进行任何过滤或限制(我几乎期望与 Take(1) 等效)。 因此,假设您想保护自己
我是一名优秀的程序员,十分优秀!