- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我从this找到了信息线程,我开始怀疑那里提供的信息是否与我面临的问题的原因有关。
QMap
采用以下模板参数:
QMap< QString, int >
我的主要问题是我正在初始化一个多维数据集类,并且在该类中包含各种调用,这些调用应该执行非常具体的事情。
特别是围绕设置类' QMap
成员。
注意以下几点:
mGeometry = new Geometry;
mGeometry->Init();
mCamera = QVector3D( 10.0, 10.0, 10.0 );
mCubeage.insert( "cubes", 0 );
来自 mCubeage.insert( "cubes", 0 );
的调试输出
//ASCII 兼容性
1)(呃哦)
#ifndef QT_NO_CAST_FROM_ASCII
inline QT_ASCII_CAST_WARN_CONSTRUCTOR QString(const char *ch) : d(fromAscii_helper(ch))
{}
2)
template <class Key, class T>
Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key &akey,
const T &avalue)
{
detach(); //the called function
QMapData::Node *update[QMapData::LastLevel + 1];
QMapData::Node *node = mutableFindNode(update, akey);
if (node == e) {
node = node_create(d, update, akey, avalue);
} else {
concrete(node)->value = avalue;
}
return iterator(node);
}
3)
bool operator==(const QMap<Key, T> &other) const;
inline bool operator!=(const QMap<Key, T> &other) const { return !(*this == other); }
inline int size() const { return d->size; }
inline bool isEmpty() const { return d->size == 0; }
inline void detach() { if (d->ref != 1) detach_helper(); } //the called function/if statement
inline bool isDetached() const { return d->ref == 1; }
inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
inline bool isSharedWith(const QMap<Key, T> &other) const { return d == other.d; }
inline void setInsertInOrder(bool ordered) { d->insertInOrder = ordered; }
inline bool operator!=(int value) const
{
return _q_value != value;
}
4)
inline bool operator!=(int value) const
{
return _q_value != value;
}
然后......那就是它停止的地方 - 轰隆隆,段错误。根据那里的一些 Qt 论坛 - 在 Internet 领域 - 声明指向 QMap
的指针是不明智的。 s,我最初想这样做主要是因为发生这种情况的一个可能原因可能是 QMap
可能没有正确初始化。然而,我认为它是一个具有默认构造函数的类成员这一事实与此相矛盾。
问题
根据上述,为什么会这样呢?可以做些什么?
想法
在有人提到我正在通过 const char*
之前到 QString
参数,我应该注意到我已经尝试声明一个 QString 并将其作为参数传递。我可能还应该注意到,我是在 Qt Creator 中从 Ubuntu 11.10 运行它的。
最佳答案
What can be done about it?
只有一件事:在 valgrind 下运行您的程序,并修复您发现的所有问题。
为什么会这样?!?谁知道?你没有提供足够的信息。也许堆栈粉碎,也许你覆盖了一些数组的末尾,等等。
关于c++ - 来自 QMap.insert( QString, int ) 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8937129/
为什么 Qt 5.1.0 Release Candidate 函数 QString::replace(const QRegExp & rx, const QString & after) 以某种方式处
我想知道最有效的方法是将保存为 QString 的二进制文件转换为相应的十六进制并将其保存在同一个 QString 中 QString value = "10111100" 进入 value = "b
我从文件中读取了两个 QString (ValueOne,ValueTwo)(只是一个基本示例) int main(int argc, char *argv[]) { QString x =
请注意 QString 和 & 之间的空格。我想知道在QT中,QString&和QString &之间有什么区别吗? 最佳答案 不,没有区别。它是纯 C++ 语法。 C++ 可以被认为是一种与空格无关
我有这样的东西: void ReadFileAndConvert () { QFile File (Directory + "/here/we/go"); if(File.open(Q
我终于在 Eclipse 中运行了 C++/QT 项目。但是当我尝试包括例如QString 我只得到代码完成中提供的 qstring.h,手动输入 QString 也可以。 我检查了只包含 qstri
我非常想找到关于上述错误的任何信息。 我正在使用 visual studio 2010。当我在调试或发布中编译我的项目(32 位)时,我收到以下消息: 1>heterogeneous.obj : er
因为我不是 C(++) 专家,所以我被编译器的一些固执所困扰,不想将 QString 转换为 QString*。我有一个功能: bool getNextMessage(int sId, QString
比较2 QString是否更快s 包含数字,或转换那些 QString s 到数字然后比较数字? 那么哪个更快? QString str1,str2; if(str1.compare(str2)==0
我对使用指针和引用感到困惑,我遇到了一个小问题。 我有一个函数: bool myObject::isFlag( QString &pArgument) const { } 我正在使用它: QStrin
我需要一个优雅的 C++ 函数,它采用包含 unix 时间的 QString 参数(例如 1295874681)并将其转换为包含 QString 的标准时间格式(例如 Mon, 24 Jan 2011
如果 QString 是本地的,那么用 QString 发出信号的正确方法是什么。我的意思是我在 wigdetA 中有这样的功能 void wigdetA::something() { // //e.
我关注 QObject : #ifndef UETYPES #define UETYPES #include #include #include #include #include #inc
我尝试使用 foreach 遍历 QHash 并获取 QHash 中的每一对,然后获取它们的键和值,以便我可以将它们附加到字符串。 这是我的 QString Packet::Serialize() {
如何使用 QMap::const_iterator作为指针? QMap::const_iterator *i = map -> constBegin(); while (i !=
在我的项目中,我需要将十六进制 QString ("c2a774657374") 转换为 UTF-8 编码的 QString ("§test") 我当前的函数 (HexToAscii) 确实将十六进制
我想将另一个类 的 QString 转换为 Int,但它似乎失败了,因为结果是 0 而它应该是 5 并且其余代码有效.因为我是 C/Qt 的新手并且发现类有点困惑,所以我认为我的类做错了什么。 小部件
我在用 C++ 编写的 GUI 项目中使用了 Qt 4.8.4。现在我合并到 Qt 5.7 版。经过长时间调整我的代码后,我终于打开了我的 GUI。但是当我运行我的计算代码时,我仍然得到这个错误: 没
我对 qt 和 C++ 比较陌生,我很难理解为什么我可以在头文件中声明以下内容: const char* CONSIGNMENT_TAG_DONATE = "DTag"; 或 QString CONS
QString 文档 http://doc.qt.io/qt-5/qstring.html#arg说 One advantage of using arg() over sprintf() is th
我是一名优秀的程序员,十分优秀!