所以,我试着制作这段代码:
#include <iostream>
using namespace std;
class BuckysClass{
public:
void setName(string x){
name = x;
}
string getName(){
return name;
}
private:
string name;
};
int main()
{
BuckysClass bo;
bo.setName("Buckingham Palace");
cout << bo.getName();
return 0;
}
成为这样的分离类:
#include "BuckysClass.h"
#include <iostream>
#include <string>
using namespace std;
int main (){
BuckysClass bo;
bo.setName("Buckingham Palace");
cout << bo.getName();
return 0;
}
==============
#ifndef BUCKYSCLASS_H
#define BUCKYSCLASS_H
class BuckysClass
{
public:
void setName(string x);
string getName();
private:
string name;
};
#endif // BUCKYSCLASS_H
=============
#include "BuckysClass.h"
#include <iostream>
#include <string>
using namespace std;
BuckysClass::BuckysClass()
{
}
void setName(string x){
name = x;
}
string getName(){
return name;
}
当我运行第一个代码时,我成功了, 但是在运行分离的类代码时出现错误,
帮我找出问题???
我尝试使用不同的代码, 但似乎我找不到原因, 我相信的最接近的原因是主要没有正确地调用分离类上的函数。
答案 0 :(得分:2)
如果你写这段代码:
void setName(string x){
name = x;
}
string getName(){
return name;
}
编译器将其解释为两个名为setName
和getName
的函数,它们不知道它们是BuckysClass
类的成员函数。
您必须使用以下语法对其进行精确处理:
void BuckysClass::setName(string x){
name = x;
}
string BuckysClass::getName(){
return name;
}
此外,您还可以在此定义默认构造函数:
BuckysClass::BuckysClass()
{
}
但你没有把它放在课堂原型中。您必须在.h文件的类原型定义中的某处添加它,否则您的编译器不会识别它:
class BuckysClass
{
public:
BuckysClass(); // Default constructor.
void setName(string x);
string getName();
private:
string name;
};