Qt QVector的多维数组

时间:2014-12-12 14:20:39

标签: c++ qt multidimensional-array qvector

我正在尝试创建一个多维数组的QVector(C ++数组类),但我遇到了麻烦

我有一个类“node”,我想传递一个多维数组的QVector作为节点类构造的参数但这不起作用,我得到一个编译错误!

Class node {
    node(QVector<array<array<int, SIZE>, SIZE>> v);
}

任何人都知道我该怎么办?

2 个答案:

答案 0 :(得分:3)

  

节点(QVector,SIZE&gt;&gt; v);

如果没有C ++ 11,那么不会编译。您需要两种方法来解决它:

预C ++ 11

node(QVector<array<array<int, SIZE>, SIZE> > v);
//                                        ^space

C ++ 11并发布

node(QVector<array<array<int, SIZE>, SIZE> > v);

正确,no change; it just works。把它放到你的qmake项目文件中:

CONFIG += c++11

但是,由于您似乎使用“C ++数组”,因此您将需要后一种解决方案。换句话说,只需为构建添加c ++ 11编译支持。

您还有其他问题:

  • 我不确定你在Class获得资本的想法。它应该写成class

  • 此外,您在课程后固有地需要分隔符(;)。

  • 您最好不要在标头文件中使用array,而是std::array

这是我的工作范例:

的main.cpp

#include <QVector>
#include <array>

const int SIZE = 5;

class node {
    node(QVector<std::array<std::array<int, SIZE>, SIZE>> v) {}
};

int main()
{
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
CONFIG += c++11
SOURCES += main.cpp

构建并运行

qmake && make && ./main

答案 1 :(得分:1)

尝试在>>之间添加空格。例如:

class node {
    node(QVector<array<array<int, SIZE>, SIZE> > v);//space here!
};//don't forget

您需要此空间,因为编译器认为您要使用>>运算符。