c++ fatal error LNK1120: 2 个无法解析的外部命令 1>

亦舒 2014-05-21 10:46:41

1>practice4_1.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Girl::~Girl(void)" (??1Girl@@QAE@XZ),该符号在函数 _main 中被引用
1>practice4_1.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Boy::~Boy(void)" (??1Boy@@QAE@XZ),该符号在函数 _main 中被引用
1>E:\vs\practice\practice4_1\Debug\practice4_1.exe : fatal error LNK1120: 2 个无法解析的外部命令
#include<iostream>
using namespace std;
class Boy
{
public:
Boy(char name,int year);
Boy(const Boy&pp);
~Boy();
char getName(){return name;}
int getYear(){return year;}
private:
char name;
int year;
};
Boy::Boy(char name,int year):name(name),year(year){}
Boy::Boy(const Boy&pp)
{
name=pp.name;
year=pp.year;
}
class Girl
{
public:
Girl(char name,int year);
Girl(const Girl &p);
~Girl();
char getName(){return name;}
int getYear(){return year;}
friend class Boy;
void visitBoy(Boy&boy);
private:
char name;
int year;
};
Girl::Girl(char name,int year):name(name),year(year){}
Girl::Girl(const Girl&p )
{
name=p.name;
year=p.year;
}
void Girl::visitBoy( Boy&boy)
{
char name=boy.getName();
cout<<name<<endl;
}
int main()
{
Girl girl('g',16);
Boy boy('j',45);
girl.visitBoy(boy);
return 0;
}
...全文
329 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zybjtu 2014-05-22
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
class Boy {
  public:
    Boy(char name, int year);
     Boy(const Boy & pp);
    ~Boy() {};
    char getName() {
	return name;
    } int getYear() {
	return year;
    }
  private:
    char name;
    int year;
};

Boy::Boy(char name, int year):name(name), year(year)
{
}

Boy::Boy(const Boy & pp)
{
    name = pp.name;
    year = pp.year;
}

class Girl {
  public:
    Girl(char name, int year);
     Girl(const Girl & p);
    ~Girl() {};
    char getName() {
	return name;
    } int getYear() {
	return year;
    }
    void visitBoy(Boy & boy);
  private:
    char name;
    int year;
};

Girl::Girl(char name, int year):name(name), year(year)
{
}

Girl::Girl(const Girl & p)
{
    name = p.name;
    year = p.year;
}

void Girl::visitBoy(Boy & boy)
{
    char name = boy.getName();
    cout << name << endl;
}

int main()
{
    Girl girl('g', 16);
    Boy boy('j', 45);
    girl.visitBoy(boy);
    return 0;
}
首先, 析构函数声明不定义不行。 其次friend并不是可以介入Boy的意思。
罗博士 2014-05-22
  • 打赏
  • 举报
回复
楼上正解:只有声明,没有定义。 要么干脆就把声明也去掉。
熊熊大叔 2014-05-21
  • 打赏
  • 举报
回复
Girl::~Girl(void)和Boy::~Boy(void)这两个函数你都没实现

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧