将课程链接到其他多个课程

时间:2019-05-21 07:19:45

标签: c++ class

我的目标是在另一个类中使用一个类,这样可以减少整体代码并提高可读性。有一个类可以访问硬件,而其他类则应使用该类

这是硬件类:

class NFC:NFC(int buspin, int datapin, int resetpin, int cspin, int *param)

在课程里面是:

NFC::getDatablock(uint8_t address, uint8_t *data);

现在有一些类“配置”和“历史记录”需要从NFC类读取和写入数据。

目前我的解决方法如下:


NFC reader(1,2,3,4,x);
CONFIG configuration();

//read configuration from reader
uint8_t configuration[64]={};
reader.getDatablock(3, &configuration);
//transfer data to config:
configuration.importData(&configuration);

//save data
uint8_t newData[64])={};
configruation.getdata(&newData);
//transfer to reader
reader.write(1,&configuration

这需要将代码添加到“ main”应用程序中,因为main.cpp知道所有类。如果可能的话,只需要打电话:

configuration.getConfig();

并在函数内部:

void configuration::getConfig(){

uint8_t db[64] = {};
reader.getDatablock(3, &configuration);
...
}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

有两个选项:

选项1:

您将在Reader类型的Configuration类中创建一个私有变量,然后在Configuration类的构造函数中添加一个接受Reader实例的参数。然后,您可以将此实例分配给Configuration类中的私有实例变量。

然后在Configuration::getConfig()中,您可以通过私有实例变量访问Reader实例。

Configuration.h

Class Config {
public:
Config(Reader *reader);
void getConfig();

private:
Reader *_reader;

Configuration.cpp

Config::Config(Reader *reader){
_reader = reader;
}

void Config::getConfig(){
...
_reader.getDatablock(...)
...
}

选项2:

如@mcabreb所述,您可以通过读取器实例作为getConfig()中的参数发送

Config.h

Class Config{
...
void getConfig(Reader *reader);

Config.cpp

void getConfig(Reader *reader){
...
reader.getDatablock(...)
...
}