以下の関数をクラスに追加しようとしています
vector<string> &split(const string &s, char delim, vector<string> &elems) {
stringstream ss(s);
string item;
while(getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
vector<string> split(const string &s, char delim) {
vector<string> elems;
return split(s, delim, elems);
}
以下は私のクラスファイルです
#ifndef LOGIN_H
#define LOGIN_H
#include <string>
#include <fstream>
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
class Login
{
private:
ifstream infile;
string sLine,username,password;
stringstream ss;
int counter,logCounter;
bool verify,end;
public:
Login();
Login(string,string);
bool loginValidate(string,string);
};
Login::Login()
{
}
Login::Login(string user,string pass)
{
username=user;
password=pass;
}
bool Login::loginValidate(string user,string pass)
{
bool result,verify;
result=false;
/* Begin Read account File */
infile.open("account.txt");
if(infile.is_open())
{
while (infile.good())
{
getline(infile, sLine);
if(sLine!="")
{
//do vector split
vector<string> x = split(sLine,':');
x.clear();
}//end if sLine
}//end while loop
}//end if
infile.close();
return result;
}//end function loginValidate
#endif
loginのloginValidate関数でsplit関数を使用しようとしています-LoginClassですが、上記のlogin validateで宣言しようとすると、次のようなエラーが発生します。
user1@ubuntu:~/yes222/New folder$ g++ test.cpp login.cpp -o main
/tmp/ccv6uiN1.o: In function `split(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)':
login.cpp:(.text+0x0): multiple definition of `split(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)'
/tmp/ccCcz7T2.o:test.cpp:(.text+0x0): first defined here
/tmp/ccv6uiN1.o: In function `split(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char)':
login.cpp:(.text+0xe9): multiple definition of `split(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char)'
/tmp/ccCcz7T2.o:test.cpp:(.text+0xe9): first defined here
collect2: ld returned 1 exit status
user1@ubuntu:~/yes222/New folder$ g++ test.cpp login.cpp -o main
login.cpp: In member function ‘bool Login::loginValidate(std::string, std::string)’:
誰かが私を導くことができますか?ありがとう!
以前はメインクラスですべてを使用していた関数ですが、ログイン部分を別のクラスに分割しようとすると、そのクラスでこの関数を使用する際に問題が発生しました。