我的真实代码;
int SearchUserName ( string searched, vector<User *> list ) {
vector<User *> :: iterator it ;
for ( it = list.begin() ; it < list.end ( ) ; ++it ) {
const string tmp = (*it) -> getUsername() ;
if ( tmp == searched ) return 1 ;
}
return 0 ;
}
// SocialNet :: createUser
void SocialNet :: createUser (const string username, const string name, \
const string surname) throw ( SocialNetException ) {
int tmp = SearchUserName ( username, this -> users ) ;
if( tmp == 0) {
User *tmp = NULL ;
tmp = new User( username, name, surname ) ;
users.push_back ( tmp ) ;
return ;
}
throw SocialNetException (USER_ALREADY_EXISTS, username) ;
}
最后,我找到了,错误:
(。text + 0x20):对main'
/tmp/cckzaRBZ.o: In function
SearchUserName(std :: basic_string,std :: allocator&gt;,std :: vector&gt;)'的未定义引用:
SocialNet.cpp :(。text + 0x47):对User::getUsername() const'
/tmp/cckzaRBZ.o: In function
SocialNet :: createUser的未定义引用(std :: basic_string,std :: allocator&gt;,std :: basic_string,std :: allocator&gt;,std: :basic_string,std :: allocator&gt;)':
SocialNet.cpp :(。text + 0x258):未定义引用`User :: User(std :: basic_string,std :: allocator&gt;,std :: basic_string,std :: allocator&gt ;,std :: basic_string,std :: allocator&gt;)'
编辑: 在makefile中;
CXX = g++
CXXFLAGS_W = -Werror -Wunused-variable -Wunused-value -Wunused-function \
-Wfloat-equal -Wall
CXXFLAGS_M = -ansi -pedantic-errors
CXXFLAGS = ${CXXFLAGS_M} ${CXFLAGS_W}
all: main
./main
编译; make filename
答案 0 :(得分:1)
你只是在编译一个文件。
类似
main: foo.o bar.o
$(CXX) -o $@ foo.o bar.o
列出所有目标文件
答案 1 :(得分:0)
评论您的所有代码。并逐行取消注释以确定导致问题的哪一行。
答案 2 :(得分:0)
我很幸运。
class people
{
public: // <--- add this line
string getpersonname();
};
答案 3 :(得分:0)
我认为您的链接器错误是由于您的某个.cpp文件未编译到程序中而引起的。