在主程序上构建类

时间:2017-11-24 18:11:57

标签: c++ class

我是目前编程和学习C ++的入门学生。我正在开发一个项目,我需要构建一个主程序,将参数传递给另外两个类来执行代码。

所以我有三个文件:

main.cpp ( this has #include "bank.cpp", #include "bank.cpp"

bank.cpp ( this has nothing)

bank.hpp (this one has #include "bank.cpp" )

所以现在在main.cpp中我希望能够调用银行的一个实例,然后再向它添加资金。所以我有类似的东西:

bank.addMoney (which bank.addMoney is in bank.cpp)

该银行的实例也在hpp文件中,如:

class bank{
    private:
        bool isBroken = false;
        double savings = 0;

    public:
}

当我编译主程序时,我收到此错误:

‘bank’ does not name a type
 bank.defaultsettings(bool isBroken, double savings){

然后列出所有我的.functions,我所做的任何指导都会受到赞赏。

主要功能:

#include <iostream>
using namespace std;

#include "bank.hpp"
#include "bank.cpp"

int main(){
    cout << "Let's save some money!!!" << endl;
    //bank.addMoney(isBroken, 10);
    cout << "You've added $10to the bank" << endl;
}

1 个答案:

答案 0 :(得分:1)

传统结构看起来更像是这样你有一个头文件定义你的bank类的工作方式:

// bank.h
class bank {
  // ...
};

然后你有一个实现文件,用于存储与bank如何被初始化,复制以及内部如何工作的其他细节相关的代码:

// bank.cpp
#include "bank.h"

bank::bank() : savings(0.0) {
  // ...
}

请记住,此代码在此文件以外的任何上下文中基本无关紧要。在另一个.cpp文件中,代码唯一需要知道的是方法签名,实现并不重要,因为签名定义了如何创建对象以及如何调用函数。只要这个建立起来,一切都可以正确编译。

从某种意义上说,从bank.h的角度来看,bank.cpp文件是您必须实施的一系列事项。即使该实现只是一个存根而且什么也不做,所以必须实现在那里声明的任何内容。

然后对于可执行程序而不是库,您还有一个main文件:

// main.cpp
#include "bank.h"

int main(int argc, char**argv) {
  bank b;
  // ...
}

请注意main引用定义,但不引用bank类的实现。通过将已编译的main.obank.o文件组合在一起,链接器在最后一次传递中将实现添加到您的可执行文件中。