Oppure

Loading
10/10/15 20:14
Roby94
Buonasera, arrivo subito al dunque. Mi trovo nello sviluppo di una libreria in C++, nella file cpp dichiaro una classe statica, vorrei però poterla inizializzare (evocare il suo costrutto) all'interno di una funzione del namespace mantenendo la staticità della classe, mi chiedo, è possibile?
Esempio per capire meglio
#include "UART.h"
#include "Buffer.h"

namespace UART
{
        Buffer RxBuffer;//Dichiaro la classe 
	Buffer TxBuffer;

        void Init();
}

void UART::Init()
{
//Qui vorrei inizializzare i due buffer, mantenendo la staticità degli stessi
}


class Buffer
{
       public:
       Buffer(uint8_t[], uint8_t);
}

Spero si capisca quello che vorrei fare.

Grazie.
Ultima modifica effettuata da Roby94 10/10/15 20:15
aaa
10/10/15 21:14
pierotofy
Crea un metodo statico chiamato Init all'interno della classe e chiama quello invece che usare il costruttore.
Il mio blog: piero.dev
11/10/15 8:07
Roby94
L'ipotesi è di non poter modificare la libreria in quanto gia compilata.

Edit:
Ho pensato a questo

    #include "UART.h"
    #include "Buffer.h"
     
    namespace UART
    {
            Buffer RxBuffer(NULL, 0);//Dichiaro la classe
            Buffer TxBuffer(NULL, 0);
     
            void Init();
    }
     
    void UART::Init()
    {
            UART::RxBuffer = Buffer(RxBufferArray, RxBufferArraySize);
	    UART::TxBuffer = Buffer(TxBufferArray, TxBufferArraySize);
    }

Se il costruttore della classe Buffer lo ammette questo approccio è valido?
Ultima modifica effettuata da Roby94 11/10/15 10:32
aaa
11/10/15 14:16
pierotofy
No non è un approccio valido; non appena UART::Init ritorna, i destruttori vengono invocati.

Potresti usare questo approccio se dichiari RxBuffer e TxBuffer come puntatori.
Il mio blog: piero.dev
11/10/15 16:41
Roby94
Cavoli, hai ragione, non ho però possibilità di adoperare l'heap, quindi niente puntatori.
Quindi non vi è soluzione?
Ultima modifica effettuata da Roby94 11/10/15 16:42
aaa
11/10/15 16:47
pierotofy
Se hai accesso ai sorgenti della libreria, potresti modificarla e ricompilarla...
Il mio blog: piero.dev
11/10/15 16:51
Roby94
Direi che non ci sono altre soluzioni. Peccato. Grazie Piero.
aaa