2017-05-26 1 views
-2

次のエラーが発生しました。どうすれば修正できますか?エラー:vscodeで宣言されていない識別子 'out_of_range'を使用しました

エラーメッセージ

Vector.cpp:9:49: error: expected ';' after expression 
if (i < 0 || size() <= i) throw out_of_range{"Vector::operator[]"}; 
              ^
              ; 
Vector.cpp:9:37: error: use of undeclared identifier 'out_of_range' 
if (i < 0 || size() <= i) throw out_of_range{"Vector::operator[]"}; 
           ^
Vector.cpp:9:70: error: expected ';' after expression 
if (i < 0 || size() <= i) throw out_of_range{"Vector::operator[]"}; 

user.cpp

#include <iostream> 
#include <cmath> 

#include "Vector.h" 

using namespace std; 

double sqrt_sum(Vector& v) 
{ 
    double sum = 0; 
    for (int i = 0; i != v.size(); ++i) 
     sum += sqrt(v[i]); 
    return sum; 
} 

int main() { 
    Vector v(1); 
    int sum = sqrt_sum(v); 
    cout << sum << endl; 
} 

Vector.h

class Vector 
{ 
    public: 
     Vector(int s); 
     double& operator[](int i); 
     int size(); 
    private: 
     double* elem; 
     int sz; 
}; 

Vector.cpp

#include "Vector.h" 

Vector::Vector(int s):elem {new double[s]}, sz{s} 
{ 
} 

double& Vector::operator[](int i) 
{ 
    if (i < 0 || size() <= i) throw out_of_range{"Vector::operator[]"}; // it works when this line is commented out 
    return elem[i]; 
} 

int Vector::size() 
{ 
    return sz; 
} 

tasks.json

{ 
    "version": "0.1.0", 
    "command": "g++", 
    "isShellCommand": true, 
    "args": ["-std=c++11", "-O2", "-g", "user.cpp", "Vector.cpp"], 
    "showOutput": "always" 
} 

更新1

Iは、2つの行の下に追加し、それが動作します。例外のヘッダを含む

#include <iostream> 
#include "Vector.h" 
using namespace std; 
+2

'#include '、https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice – LogicStuff

+0

ありがとうございました。私は '' #include ''をVector.cppの上に追加しましたが、うまくいきませんでした。 – zono

+0

これは 'std'名前空間にあります... – LogicStuff

答えて

1

試行:

#include <stdexcept> 

このexampleに示すように。

名前空間stdを使用するか、スコープをstd::で解決することを忘れないでください。

+0

'' '#include ' ''が必須かどうかまだ分かりません。ラインの有無にかかわらず、それは私のケースで動作します。しかし、それについて分かち合ってくれてありがとう。参考リンクはとても役に立ちます。 – zono

+1

@ zonoおそらく他の標準ヘッダーに含まれるでしょう!どういたしまして。 – gsamaras

関連する問題