成员函数的无效使用(您是否忘记了 '()' )
invalid use of member function (did you forget the '()' )
我试图将arduino的RF24函数包装成一个更简单的class,这样我以后可以更直观地使用,所以我制作了一个.h文件:
#ifndef RADIO_H
#define RADIO_H
#include <RF24.h>
#include <Arduino.h>
class Radio
{
private:
RF24 radio(int ce, int csn);
int opMode;
byte address;
protected:
void setReceiver();
void setTransmitter();
public:
Radio(int ce, int csn, int mode, byte channel);
};
#endif
和一个 .cpp 文件:
#include "Radio.h"
#include "Parameters.h"
#include <Arduino.h>
#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
Radio::Radio(int ce, int csn, int mode, byte channel){
RF24 radio(ce,csn);
radio.begin();
opMode = mode;
address = channel;
if(opMode == RX){
setReceiver();
}
else if(opMode == TX){
setTransmitter();
}
}
//Protected Functions
void Radio::setReceiver(){
//radio.openReadingPipe(0,address);
//radio.startListening();
}
void Radio::setTransmitter(){
//radio.openWritingPipe(address);
radio.stopListening();
}
但是,我收到以下错误并且无法弄清楚代码有什么问题:
sketch\Radio.cpp: In member function 'void Radio::setTransmitter()':
Radio.cpp:74:2: error: invalid use of member function 'RF24
Radio::radio(int, int)' (did you forget the '()' ?)
radio.stopListening(); ^~~~~ Radio.cpp:74:2: error: invalid use of
member function 'RF24 Radio::radio(int, int)' (did you forget the '()'
?) exit status 1 invalid use of member function 'RF24
Radio::radio(int, int)' (did you forget the '()' ?)
谁能帮我找出问题所在?
您已经声明了一个成员函数 radio
,它接受两个 int
和 returns 一个 RF24
。
像其他成员变量一样声明radio
为成员变量,
RF24 radio;
并在初始化列表中对其进行初始化,
Radio::Radio(int ce, int csn, int mode, byte channel)
: radio(ce, csn)
{
radio.begin();
// ...
您想要一个名为 radio
的 RF24
实例,但您已经声明了一个名为 radio
的函数,该函数 returns 是一个 RF24
实例:
class Radio
{
private:
RF24 radio; // remove: (int ce, int csn);
...
然后在你的构造函数中,像这样初始化它:
Radio::Radio(int ce, int csn, int mode, byte channel)
: // colon starts the member initializer list
radio(ce, csn) // initialize the radio
{
...
我试图将arduino的RF24函数包装成一个更简单的class,这样我以后可以更直观地使用,所以我制作了一个.h文件:
#ifndef RADIO_H
#define RADIO_H
#include <RF24.h>
#include <Arduino.h>
class Radio
{
private:
RF24 radio(int ce, int csn);
int opMode;
byte address;
protected:
void setReceiver();
void setTransmitter();
public:
Radio(int ce, int csn, int mode, byte channel);
};
#endif
和一个 .cpp 文件:
#include "Radio.h"
#include "Parameters.h"
#include <Arduino.h>
#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
Radio::Radio(int ce, int csn, int mode, byte channel){
RF24 radio(ce,csn);
radio.begin();
opMode = mode;
address = channel;
if(opMode == RX){
setReceiver();
}
else if(opMode == TX){
setTransmitter();
}
}
//Protected Functions
void Radio::setReceiver(){
//radio.openReadingPipe(0,address);
//radio.startListening();
}
void Radio::setTransmitter(){
//radio.openWritingPipe(address);
radio.stopListening();
}
但是,我收到以下错误并且无法弄清楚代码有什么问题:
sketch\Radio.cpp: In member function 'void Radio::setTransmitter()': Radio.cpp:74:2: error: invalid use of member function 'RF24 Radio::radio(int, int)' (did you forget the '()' ?)
radio.stopListening(); ^~~~~ Radio.cpp:74:2: error: invalid use of member function 'RF24 Radio::radio(int, int)' (did you forget the '()' ?) exit status 1 invalid use of member function 'RF24 Radio::radio(int, int)' (did you forget the '()' ?)
谁能帮我找出问题所在?
您已经声明了一个成员函数 radio
,它接受两个 int
和 returns 一个 RF24
。
像其他成员变量一样声明radio
为成员变量,
RF24 radio;
并在初始化列表中对其进行初始化,
Radio::Radio(int ce, int csn, int mode, byte channel)
: radio(ce, csn)
{
radio.begin();
// ...
您想要一个名为 radio
的 RF24
实例,但您已经声明了一个名为 radio
的函数,该函数 returns 是一个 RF24
实例:
class Radio
{
private:
RF24 radio; // remove: (int ce, int csn);
...
然后在你的构造函数中,像这样初始化它:
Radio::Radio(int ce, int csn, int mode, byte channel)
: // colon starts the member initializer list
radio(ce, csn) // initialize the radio
{
...