如何用new初始化QVector<QVector<QString>>*矩阵(作为类成员)?
How can I initialize QVector<QVector<QString>> *matrix (as class member) with new?
我真的尝试了一切,但我找不到解决方案,我尝试先初始化外部QVector
然后初始化内部,但没有成功。
QVector *矩阵(作为类成员(与新的?
这存在问题,即:
-
您不应该在堆上分配
QVector
(即作为带有 new 的指针(。 -
你应该更多地利用
QStringList
。
我个人的建议是:
主.cpp
#include <QVector>
#include <QStringList>
#include <QDebug>
class Foo
{
public:
Foo() { qDebug() << matrix; }
private:
// Could be QStringLiteral, but you could also build it in the
// constructor if it is dynamic
QVector<QStringList> matrix{{"foo", "bar", "baz"}, {"hello", "world", "!"}};
};
int main()
{
Foo foo;
return 0;
}
main.pro
TEMPLATE = app
TARGET = main
QT = core
CONFIG += c++11
SOURCES += main.cpp
构建和运行
qmake && make && ./main
输出
QVector(("foo", "bar", "baz"), ("hello", "world", "!"))
可能你不能这样做,因为你错过了一个>
.所以试试这个:
#include<QDebug>
//...
private:
QVector<QVector<QString> > *matrix = new QVector<QVector<QString> >;
在构造函数中:
matrix->append(QVector<QString>() << "hello world");
qDebug() << "output: " << *matrix;
但我认为你应该在构造函数中分配内存。例如:
private:
QVector<QVector<QString> > *matrix;
在构造函数中:
matrix = new QVector<QVector<QString> >;
matrix->append(QVector<QString>() << "hello world");
qDebug() << "output:" << *matrix;
两种情况下的输出:
输出: QVector(QVector("hello world"( (
相关文章:
- 将 Qvector<uint8_t> 转换为 QString
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- 正确清洁 QVector
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 阅读 QML 中结构C++ QVector 的 QVector
- QDataStream read to QVector
- 调用QVector::保留即使不知道确切的元素数量?
- C++Qt QtConcurrent::filtered从std::shared_ptr的QVector减少
- 如何显式调用运算符<<
- 如何创建可以包含不同小部件的QVector或其他容器
- QT - 如何从 QVector<QComboBox* 获取信号"currentIndexChanged">
- 使用 QVector 创建图形磁贴(QCache 之前的基础知识)
- 如何在QtConcurrent::run中启动QTimer或为什么QVector<QTimer*>不起作用
- 如何通过 Qdialog 中的 qtablewidget 填充作为 MainWindow 成员的 qvector
- 用表中坐标中的 QVector 填充 QScatterDataArray
- 模板操作员&lt;未打电话