1

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

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

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

任何人都知道我应该如何进行?

4

2 回答 2

3

节点(QVector,大小>> v);

如果没有 C++11 及更高版本,那将无法编译。您需要两种方法来解决它:

C++11 之前

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

C++11 和后期

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

正确,没有变化;它只是工作。将其放入您的 qmake 项目文件中:

CONFIG += c++11

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

您还有其他问题:

  • 我不确定你从哪里得到资本的想法Class。应该写class

  • 此外,您天生就需要在;课程之后使用分隔符 ( )。

  • 你最好不要array在头文件中使用,但是std::array.

这是我的工作示例:

主文件

#include <QVector>
#include <array>

const int SIZE = 5;

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

int main()
{
    return 0;
}

主程序

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

构建并运行

qmake && make && ./main
于 2014-12-12T14:53:14.327 回答
1

尝试在>>. 例如:

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

你需要这个空间,因为编译器认为你想使用>>运算符。

于 2014-12-12T14:35:55.287 回答