在一个.cpp文件中,我声明并实现了一个“Vertex”类。然后我声明并实现第二个类“ThreeDimensionObject”。在ThreeDimensionObject里面 ,它有一个公共成员std :: vector> vertex_matrix;
我做了导入。该项目在xCode IDE上正常运行,g ++提示我“错误:'vertex_matrix'未在此范围内声明”。
我该如何解决?
#include <vector>
class Vertex : public std::vector<float>
{
//implementation
};
class ThreeDimensionObject
{
//the center position
public:
//num_stack * num_stack * 4
std::vector<std::vector<Vertex>> vertex_matrix;
};
答案 0 :(得分:2)
编译为IDEONE时,代码在c++11上编译正常。在没有C ++。11标志的情况下编译时,代码会发出以下错误:
prog.cpp:12:35: error: ‘>>’ should be ‘> >’ within a nested template argument list
std::vector<std::vector<Vertex>> vertex_matrix;
此错误可能发生在错误列表的顶部附近,您可能没有看到它。您可以将代码编译为C ++ 11(通过将-std=gnu++11
或-std=c++11
添加到g++
命令行),或者您可以添加所需的空间。
std::vector<std::vector<Vertex> > vertex_matrix;
答案 1 :(得分:1)
'顶点矩阵'的定义应为
std::vector<std::vector<Vertex> > vertex_matrix;
您的代码使用c ++ 11标志编译,但没有c ++ 11标记它需要额外的空间。