我正在为arduino的RF模块制作一个库。当我收到一个我不知道如何解决的错误时,我差不多完成了我的代码。 错误发生在这段代码中:
#include "Rf_module.hpp"
class send;
class receive;
class whatsapp : public send, public receive
{
private:
hwlib::target::pin_in_out &whatsapp_pin;
public:
whatsapp(hwlib::target::pin_in_out &whatsapp_pin, int frequency):
send (whatsapp_pin, frequency),
receive (whatsapp_pin, frequency),
whatsapp_pin( whatsapp_pin )
{}
void send_text(char text[], int length)
{
for(int i = 0; i< length-1; i++)
{
int ascii_value = text[i];
send_byte(ascii_value);
错误是:对'send_byte'的引用不明确。 我的代码是几个类中的结构,从部分抽象的类通信开始。
#include "hwlib.hpp"
class communication
{
protected:
hwlib::target::pin_in_out & current_pin;
int sending_frequency;
public:
communication(hwlib::target::pin_in_out & current_pin, int sending_frequency);
virtual void send_bit(int bit);
virtual int get_bit();
virtual void get_startbit() = 0;
virtual void send_startbit() = 0;
virtual int get_byte() = 0;
virtual void send_byte(int byte) = 0;
};
然后还有一个RF模块本身的发送和接收类。
#include "hwlib.hpp"
#include "communication.hpp"
class send : public communication
{
public:
send(hwlib::target::pin_in_out & current_pin, int sending_frequency);
void send_startbit() override;
void send_byte(int byte) override;
void test_send();
class receive : public communication
{
public:
receive(hwlib::target::pin_in_out & current_pin, int sending_frequency);
void get_startbit() override;
int get_byte() override;
void test_receive();
};
我的主要看起来像这样;
#include "hwlib.hpp"
#include "whatsapp.hpp"
int main(void)
{
auto pin = hwlib::target::pin_in_out(1,17);
pin.direction_set_output();
whatsapp sender(pin,10);
sender.test_send();
return 0;
}
许多文件中包含的hwlib库是我的老师用来处理arduino的库,它非常标准,它允许你使用引脚和其他一些方法。我希望你们有足够的信息 你可以帮我解决这个问题。
答案 0 :(得分:0)
(condition ? expression_if_true : expression_if_false);
您正在使用多重继承,两者都会实现class whatsapp : public send, public receive
,因此会出现错误。您需要指定通过哪个类:
send_byte
但这似乎设计不好!