Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 多维数组的Qt向量_C++_Qt_Multidimensional Array_Qvector - Fatal编程技术网

C++ 多维数组的Qt向量

C++ 多维数组的Qt向量,c++,qt,multidimensional-array,qvector,C++,Qt,Multidimensional Array,Qvector,我正试图创建多维数组(C++数组类)的QVector,但我遇到了麻烦 我有一个类“node”,我想传递多维数组的QVector作为node类构造的参数,但这不起作用,我得到了一个编译错误 Class node { node(QVector<array<array<int, SIZE>, SIZE>> v); } 类节点{ 节点(qv向量); } 有人知道我该如何继续吗?尝试在>之间添加空格。例如: class node { node(QVe

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

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

Class node {
    node(QVector<array<array<int, SIZE>, SIZE>> v);
}
类节点{
节点(qv向量);
}

有人知道我该如何继续吗?

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

class node {
    node(QVector<array<array<int, SIZE>, SIZE> > v);//space here!
};//don't forget
类节点{
node(QVector v);//这里是空格!
};//别忘了

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

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

class node {
    node(QVector<array<array<int, SIZE>, SIZE> > v);//space here!
};//don't forget
类节点{
node(QVector v);//这里是空格!
};//别忘了
您需要这个空间,因为编译器认为您需要使用
>
运算符

节点(QVector,大小>>v)

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

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

您还有其他问题:

  • 我不知道你是从哪里想到
    类的资本的。它应该是
    编写的

  • 此外,类后面固有地需要分隔符(

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

这是我的工作示例:

main.cpp 构建并运行 节点(QVector,大小>>v)

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

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

您还有其他问题:

  • 我不知道你是从哪里想到
    类的资本的。它应该是
    编写的

  • 此外,类后面固有地需要分隔符(

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

这是我的工作示例:

main.cpp 构建并运行
编译错误是什么?@ SjdOrdWrror是:“预期”之前的“VHANCHO数组是C++数组类,编译错误是什么?@ SjdOrrn错误是:‘预期’)之前的'VHANCHO数组是C++数组类错误,实际上,C++11不需要它。@lpapp我刚才删除了注释,因为我理解了您试图说的关于这个空间的内容,而不是关于std::array的内容。是的,你是对的。@lpapp你的答案肯定更好,我将删除我的答案,但首先我想问,为什么在添加空格后,OP没有错误?如果他激活了C++11支持,那么它应该可以正常工作吗?也许这是OP编译器的规范?@Chernobyl:有人发现你的答案很有用,所以我不会删除它我不确定OP使用什么编译器。Gcc在4.3中实现了直角括号,因此最早的Gcc版本支持一些C++11,VS2010(msvc)也是如此。因此,如果std::array工作,也应该是这样,但是,OP可能使用了不同的编译器,或者只是在不理解的情况下胡闹。也可能他有一个与数组扩展名不兼容的编译器。@user3521418:什么编译器,哪个版本,哪个平台?“激活”是什么意思?在项目文件中,还是直接到编译器的其他地方?你到底是怎么做到的?你能提供一份报告吗?你能检查一下我的SSCCE是否有效吗?错,实际上你不需要它与C++11一起使用。@lpapp我刚才删除了注释,因为我明白你想说什么,关于这个空间,而不是关于std::array。是的,你是对的。@lpapp你的答案肯定更好,我将删除我的答案,但首先我想问,为什么在添加空格后,OP没有错误?如果他激活了C++11支持,那么它应该可以正常工作吗?也许这是OP编译器的规范?@Chernobyl:有人发现你的答案很有用,所以我不会删除它我不确定OP使用什么编译器。Gcc在4.3中实现了直角括号,因此最早的Gcc版本支持一些C++11,VS2010(msvc)也是如此。因此,如果std::array工作,也应该是这样,但是,OP可能使用了不同的编译器,或者只是在不理解的情况下胡闹。也可能他有一个与数组扩展名不兼容的编译器。@user3521418:什么编译器,哪个版本,哪个平台?“激活”是什么意思?在项目文件中,还是直接到编译器的其他地方?你到底是怎么做到的?你能提供一份报告吗?你能检查一下我的SSCCE是否有效吗?
node(QVector<array<array<int, SIZE>, SIZE> > v);
CONFIG += c++11
#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