如何初始化QVector <qvector <qstring>&gt; * matrix(作为类成员)使用new?</qvector <qstring>

时间:2014-12-14 10:29:19

标签: c++ qt qstring qtcore qvector

我真的尝试了一切,但我无法找到解决方案,我首先尝试初始化外部QVector然后内部但是它没有成功。

2 个答案:

答案 0 :(得分:1)

  

QVector *矩阵(作为班级成员)有新的?

这有一些问题,即:

  • 您不应在堆上分配QVector(即作为新指针)。

  • 您应该更多地使用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", "!"))

答案 1 :(得分:0)

可能你不能这样做,因为你错过了一个>。所以试试这个:

#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(&#34; hello world&#34;))