Estendere classe EthernetClient
ciao tutti,
sto rendendo compatibile il codice del progetto ardupower con arduino 1.0, e ho bisogno d'aiuto per estendere la classe ethernetclient in modo che mi ritorni il numero del socket associato al client, nella vecchia versione ho copiato tutto il codice del client e ho aggiunto la funzione
uint8_t client::id () {
return _sock;
}
questa soluzione non mi piace perché in caso di modifiche della libreria ethernet non funziona più niente.
questa sera ho provato ad estendere la classe ethernetclient aggiungendo la funzione
uint8_t socketnumber () {
return _sock;
}
ma mi da l'errore
myethernetclient.cpp: in function 'uint8_t socketnumber()':
myethernetclient.cpp:14: error: '_sock' not declared in scope
effettivamente la variabile è definita nella classe che estendo e non nella myethernetclient
ho creato due files
myethernetclient.cpp
e myethernetclient.h
scopiazzando dall'ethernetclient.
c'è qualcuno che mi può aiutare?
sto rendendo compatibile il codice del progetto ardupower con arduino 1.0, e ho bisogno d'aiuto per estendere la classe ethernetclient in modo che mi ritorni il numero del socket associato al client, nella vecchia versione ho copiato tutto il codice del client e ho aggiunto la funzione
uint8_t client::id () {
return _sock;
}
questa soluzione non mi piace perché in caso di modifiche della libreria ethernet non funziona più niente.
questa sera ho provato ad estendere la classe ethernetclient aggiungendo la funzione
uint8_t socketnumber () {
return _sock;
}
ma mi da l'errore
myethernetclient.cpp: in function 'uint8_t socketnumber()':
myethernetclient.cpp:14: error: '_sock' not declared in scope
effettivamente la variabile è definita nella classe che estendo e non nella myethernetclient
ho creato due files
myethernetclient.cpp
code: [select]
extern "c" {
#include "string.h"
}
#include "arduino.h"
#include "ethernet.h"
#include "ethernetclient.h"
#include "ethernetserver.h"
#include "dns.h"
#include "myethernetclient.h"
uint8_t socketnumber () {
return ethernetclient(_sock);
}e myethernetclient.h
code: [select]
#ifndef myethernetclient_h
#define myethernetclient_h
#include "arduino.h"
#include "print.h"
#include "client.h"
#include "ipaddress.h"
#include "ethernetclient.h"
class myethernetclient : public ethernetclient {
public:
uint8_t socketnumber();
};
#endifscopiazzando dall'ethernetclient.
c'è qualcuno che mi può aiutare?
nel .h puoi evitare gli include, tranne quello ethernetclient :-)
nel cpp stessa cosa, basta solo #include "myethernetclient.h"
purtroppo _sock è una variabile privata, quindi non la puoi utilizzare al di fuori della classe ethernetclient. per essere utilizzata solo dalle sottoclassi, e non da altre parte del codice, dovrebbe essere dichiarata come "protected"
mi spiace ma non c'è soluzione al fatto di modificare manualmente la ethernetclient, tranne chiedere agli sviluppatorei dell'ide di rendere le variabili protected, o aggiungere una funzione get
nel cpp stessa cosa, basta solo #include "myethernetclient.h"
purtroppo _sock è una variabile privata, quindi non la puoi utilizzare al di fuori della classe ethernetclient. per essere utilizzata solo dalle sottoclassi, e non da altre parte del codice, dovrebbe essere dichiarata come "protected"
mi spiace ma non c'è soluzione al fatto di modificare manualmente la ethernetclient, tranne chiedere agli sviluppatorei dell'ide di rendere le variabili protected, o aggiungere una funzione get
Arduino Forum > International > Italiano > Generale (Moderator: leo72) > Estendere classe EthernetClient
arduino
Comments
Post a Comment