如何在分离的类中调用函数?

时间:2016-01-13 08:15:59

标签: c++

所以,我试着制作这段代码:

#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;
}

当我运行第一个代码时,我成功了, 但是在运行分离的类代码时出现错误,

帮我找出问题???

我尝试使用不同的代码, 但似乎我找不到原因, 我相信的最接近的原因是主要没有正确地调用分离类上的函数。

1 个答案:

答案 0 :(得分:2)

如果你写这段代码:

void setName(string x){
    name = x;
}

string getName(){
    return name;
}

编译器将其解释为两个名为setNamegetName的函数,它们不知道它们是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;
};