成员函数的无效使用(您是否忘记了 '()' )

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();
    // ...

您想要一个名为 radioRF24 实例,但您已经声明了一个名为 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
{
    ...