我是目前编程和学习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;
}
答案 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.o
和bank.o
文件组合在一起,链接器在最后一次传递中将实现添加到您的可执行文件中。