c++ fatal error LNK1120: 二 个无法解析的外部命令 1>
c++ fatal error LNK1120: 2 个无法解析的外部命令 1>
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;
}
------解决方案--------------------
Girl::~Girl(void)和Boy::~Boy(void)这两个函数你都没实现
------解决方案--------------------
楼上正解:只有声明,没有定义。
要么干脆就把声明也去掉。
------解决方案--------------------
首先, 析构函数声明不定义不行。 其次friend并不是可以介入Boy的意思。
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;
}
------解决方案--------------------
Girl::~Girl(void)和Boy::~Boy(void)这两个函数你都没实现
------解决方案--------------------
楼上正解:只有声明,没有定义。
要么干脆就把声明也去掉。
------解决方案--------------------
#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的意思。