C++ 获取以下c+;的链接器错误+;代码
我最近开始学习面向对象编程。对于以下代码,我得到了链接器错误C++ 获取以下c+;的链接器错误+;代码,c++,c++builder,object-oriented-analysis,C++,C++builder,Object Oriented Analysis,我最近开始学习面向对象编程。对于以下代码,我得到了链接器错误 #include <iostream> #include <string> #include <cstdlib> using namespace std; class person{ public: string name; person(); person(string n){ name = n ;
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
class person{
public:
string name;
person();
person(string n){
name = n ;
}
void setName(string k){
name = k;
}
string getName(){
return name;
}
};
class student : public person {
public:
string major;
void setMajor(string m){
major = m;
}
string getMajor(){
return major;
}
};
class faculty : public person{
public:
string department;
faculty(string dept){
department = dept;
}
void setDepartment(string depart){
department = depart;
}
string getDepartment(){
return department;
}
};
int main() {
student s;
s.setName("james");
s.setMajor("computer science");
string p = s.getName();
string p2 = s.getMajor();
cout << "student name and mjor is :" << p << p2 << endl;
faculty f("nanotech");
f.setName("chris");
f.setDepartment("electrical");
string f1 = f.getName();
string f2 = f.getDepartment();
cout << "facult name and department :" << f1 << f2 << endl;
return 0;
}
在类person中,有一个已声明但未定义的构造函数。编译器允许您编译类,但链接器会查找实现(称为): 问题是,您继承了学生和教师中的人,您使用默认构造函数,但从未实现它。尝试添加实现,链接器错误将消失:
class person{
public:
string name;
person(){} //constructor implemented
person(string n){
name = n ;
}
.....
};
问题是您需要实现person类的构造函数,请尝试以下代码:
#包括
#包括
#包括
使用名称空间std;
班主任{
公众:
字符串名;
人(){
}
人(字符串n){
name=n;
}
void setName(字符串k){
name=k;
}
字符串getName(){
返回名称;
}
};
班级学生:公众人士{
公众:
弦乐大调;
void setMajor(字符串m){
主修=m;
}
字符串getMajor(){
返回专业;
}
};
班主任:公众人士{
公众:
弦乐部;
学院(弦乐系){
部门=部门;
}
部门(字符串分离){
部门=出发;
}
字符串getDepartment(){
退货部;
}
};
int main(){
学生证;
s、 设置名称(“詹姆斯”);
s、 SET专业(“计算机科学”);
字符串p=s.getName();
字符串p2=s.getMajor();
库特
class person{
public:
string name;
person(); //constructor only declared
person(string n){
name = n ;
}
.....
};
class person{
public:
string name;
person(){} //constructor implemented
person(string n){
name = n ;
}
.....
};
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
class person{
public:
string name;
person() {
}
person(string n){
name = n ;
}
void setName(string k){
name = k;
}
string getName(){
return name;
}
};
class student : public person {
public:
string major;
void setMajor(string m){
major = m;
}
string getMajor(){
return major;
}
};
class faculty : public person{
public:
string department;
faculty(string dept){
department = dept;
}
void setDepartment(string depart){
department = depart;
}
string getDepartment(){
return department;
}
};
int main() {
student s;
s.setName("james");
s.setMajor("computer science");
string p = s.getName();
string p2 = s.getMajor();
cout << "student name and mjor is :" << p << p2 << endl;
faculty f("nanotech");
f.setName("chris");
f.setDepartment("electrical");
string f1 = f.getName();
string f2 = f.getDepartment();
cout << "facult name and department :" << f1 << f2 << endl;
return 0;
}