1

这是代码: 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++ version 4.2 g++ -Wall -c quicksort.cpp

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

4

2 回答 2

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 = ...;
于 2013-03-03T19:29:48.170 回答
0

您忘记包含-std=c++11-std=gnu++11(在 4.7.0 之前-std=c++0x-std=gnu++0x旧版本 GCC 上),后者包含扩展。如果这仍然不起作用,那么您需要更新版本的 GCC。

于 2013-03-03T19:30:57.997 回答