我已将您提供的所有解决方案应用于类似问题,但我仍然收到此错误:
undefined reference to `setgolf(golf&, char*, int)'
collect2: error: ld returned 1 exit status
这是代码标题
#ifndef SANS_H_INCLUDED
#define SANS_H_INCLUDED
const int len = 40;
struct golf
{
char fullname[len];
int handicap;
};
//void setgolf(golf &,char * ,int);
int setgolf(golf &);
void sethandicap(golf &,int );
void showgolf(const golf &);
#endif
这是包含函数定义
的文件#include <iostream>
#include <cstring>
#include "chapter9exe3.h"
void setgolf(golf & s,char *c ,int hc)
{
strcpy(s.fullname,c);
s.handicap=hc;
}
int setgolf(golf & s)
{
std::cin.getline(s.fullname,len);
if(s.fullname[0] == '\0'&& s.fullname[1] == '\0' && s.fullname[2] == '\0')
return 0;
else
return 1;
}
void sethandicap(golf & s,int n )
{
s.handicap = n;
}
void showgolf(const golf & s)
{
std::cout<<"the full name :"<<s.fullname<<std::endl;
std::cout<<"the handcape :"<<s.handicap<<std::endl;
}
这是包含主要功能
的文件#include <iostream>
#include "sans.h"
int main()
{
golf player;
char name[len] = "santers God's men";
int handicap = 84;
setgolf(player,name,handicap);
return 0;
}
答案 0 :(得分:2)
取消注释:
//void setgolf(golf &,char * ,int);
在你的头文件中,因为你在main中执行:
setgolf(player,name,handicap);
将在头文件中搜索匹配的原型,并且无法填写它,因为您已对其进行了评论。
换句话说,您使用三个参数调用该函数,但仅在头文件中使用一个参数提供此函数的原型。因此,对具有三个参数的setgolf()
的引用是定义未定义的!