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 コードを使用): g++ version 4.2 g++ -Wall -c quicksort.cpp

-std=c++11 を使用すると、認識されないコマンド ライン オプション "-std=c++11" と表示されます

4

2 に答える 2

3

を含めるには C++11 のサポートが必要です<array>-std=c++0xGCC ではフラグ (最新バージョンでは -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++11or -std=gnu++11(-std=c++0xおよび-std=gnu++0x4.7.0 より前の古いバージョンの GCC では)を含めるのを忘れていました。後者には拡張機能が含まれています。それでもうまくいかない場合は、より新しいバージョンの GCC が必要です。

于 2013-03-03T19:30:57.997 に答える