繁体   English   中英

如何初始化QVector <QVector<QString> &gt; *矩阵(作为班级成员)有新的?

[英]How can I initialize QVector<QVector<QString>> *matrix (as class member) with new?

我确实尝试了所有方法,但找不到解决方案,我先尝试初始化外部QVector然后初始化内部QVector ,但未成功。

QVector *矩阵(作为类成员)具有新功能?

这有问题,即:

  • 您不应该在堆上分配QVector (即作为带有new的指针)。

  • 您应该更多地利用QStringList

我个人建议是这样的:

main.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”))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM