找不到文件:在C ++中使用数组类

时间:2013-03-03 19:28:23

标签: c++ compiler-errors

以下是代码:错误显示在main.hpp的第8行。

//main.hpp
#ifndef MAIN_HPP  // if main.hpp hasn't been included yet...
#define MAIN_HPP //   #define this so the compiler knows it has been included  

#include <array> // OFFENDING LINE 8
using std:array


class Quicksort {

public:
  void sort(array);

};

#endif 

此c ++文件正在使用此标头。

#include "main.hpp"
// this is just the start of a quicksort algorithm, base case only
void Quicksort::sort (array list) {
  if (list.size == 1 || list.size == 0) {
    return;
  }

}

为什么我收到此错误?我以为我的C ++和g ++都很好。其他任何原因可能无法正常工作?

我正在使用该命令进行编译(在Mac上,使用最新的X-Code):g ++ 4.2版     g ++ -Wall -c quicksort.cpp

当我使用-std = c ++ 11时,它说: 无法识别的命令行选项“-std = c ++ 11”

2 个答案:

答案 0 :(得分:3)

您需要C ++ 11支持才能包含<array>。在GCC上,您需要使用-std=c++0x标志(或最新版本的-std = c ++ 11)。 此外,array位于std命名空间中,而可能意味着传递引用:

void sort(std::array&);

如果您的编译器不支持C ++ 11的相关部分,您可以使用TR1中的版本:

#include <tr1/array>

...
std::tr1::array<int, 5> a = ...;

答案 1 :(得分:0)

您忘记在4.7.0之前的旧版本GCC中加入-std=c++11-std=gnu++11-std=c++0x-std=gnu++0x,后者包括扩展名。如果仍然无效,那么您需要更新版本的GCC。