1. ホーム
  2. c++

[解決済み] "vector "がこのスコープで宣言されていません。

2022-02-22 08:34:25

質問

hと*cppでファイルを区切ると、次のようなエラーが発生します。 これはmain.cppです。

#include <iostream>
#include <math.h>
#include <vector>
#include "functia.h"

using namespace std;

int main()
 {
  vector<double> s(3);
  double b= 4;
  fun(s, b);
  cout<<s[0]<<endl;
  double c= 9;
  fun(s, c);
  cout<<s[0];

  }

functia.h:

 void fun(vector<double> & rS, double a)
 {
   rS[0] = a + 3;
   rS[1] = 4;
   rS[2] = 5;
 }

functia.cpp。

#include <iostream>
#include <math.h>
#include<vector>

using namespace std;


void fun(vector<double> &, double );

解決方法は?

cppファイルで宣言し、ヘッダーで定義していますが、本当は逆であるべきです。

ファイルを入れ替えた後は using namespace std; ヘッダーファイルの中で名前空間を引き込むのは良い習慣ではありません。この宣言を次のように変更する必要があります。

void fun(std::vector<double> &, double );

参照 c++ヘッダでのnamespaceの使用について

を読むことを強くお勧めします。 C/C++ インクルードファイルの順序とベストプラクティス