我的目标是在另一个类中使用一个类,这样可以减少整体代码并提高可读性。有一个类可以访问硬件,而其他类则应使用该类
这是硬件类:
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);
...
}
有没有办法做到这一点?
答案 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(...)
...
}