ヘッダーファイルを作成し、cpp.fileで使用しようとしました。コンパイラは、ヘッダファイルの関数を再定義しようとするとエラーが表示されます。 同様の方法でヘッダーを使用していた前回は、この問題に直面しませんでした。たぶん、私は間違った方法でベクトルを初期化します。ヘッダーファイルの関数を再定義するC++
#include <vector>
#include <string>
namespace otecpp_lajitellut {
std::vector<std::string> lajitellut(int, char*);
}
:
#include <string>
#include <vector>
#include "lajitellut.h"
using namespace std;
namespace otecpp_lajitellut{
/*this is where the error appears*/
vector<string> lajitellut(int lkm, char*mjt[]){
vector<string> stringVector;
for(int i =0; i<lkm; i++){
stringVector.push_back(mjt[i]);
}
for(int i =0; i<lkm; i++){
for(int a = 0; a<lkm;a++){
if(stringVector[i] < stringVector[a]){
stringVector[i].swap(stringVector[a]);
}
}
}
return stringVector;
}
}
そしてここにヘッダファイル
#ifndef kissa
#define kissa
#include <string>
#include <vector>
namespace otecpp_lajitellut{
std::vector <std::string> lajitellut(int lkm, char* mjt[]) {
std::vector<std::string> stringVector;
return stringVector;
}
}
#endif // kissa
ヘッダーファイルに関数宣言を挿入します。ソースファイルに機能(定義)を入れてください。 – Ron
次に、何も再定義しないでください。ヘッダファイルに定義の代わりに宣言を入れたいと思ったのでしょうか? – VTT
あるいは、あなたのヘッダに 'inline'関数を定義するだけではありません。 –