What you have to understand is the concept of scope.
Everything (well, almost everything) in C and C++ is enclosed in { and }. Those define a scope, and everything defined within that scope is available to any other scopes defined within that scope.
You can also assume that the whole sketch is surrounded by { and }. This scope is called the global scope. Anything defined within it is available anywhere in your sketch.
So by defining the object in the global scope it is available everywhere:
# include "Leddisplay.h"
Leddisplay *pRightDigit;
void setup() {
    byte Digit[9] = { 22, 23 , 24 ,25, 26, 27, 28, 29, 2 };
    pRightDigit = new Leddisplay(Digit);
}
void loop() {
    pRightDigit->setDigit(5);
    pRightDigit->displayDigit();
}However the use of new etc is discouraged in low-memory systems. Better is to statically define the object:
# include "Leddisplay.h"
const byte Digit[9] = { 22, 23 , 24 ,25, 26, 27, 28, 29, 2 };
Leddisplay pRightDigit(Digit);
void setup() {
}
void loop() {
    pRightDigit.setDigit(5);
    pRightDigit.displayDigit();
}Note that, when statically defined like this, things in the constructor aren't guaranteed to be run at the right time. They should be moved into a .begin() function that you then call from setup():
# include "Leddisplay.h"
const byte Digit[9] = { 22, 23 , 24 ,25, 26, 27, 28, 29, 2 };
Leddisplay rightDigit(Digit);
void setup() {
    rightDigit.begin();
}
void loop() {
    rightDigit.setDigit(5);
    rightDigit.displayDigit();
} 
                 
                                             
                         
                        
manpreet![Tuteehub forum best answer]() Best Answer
                                                
                                                                                                        3 years ago
                                                    Best Answer
                                                
                                                                                                        3 years ago
                                                
                                            
I'm new to the Arduino world. The last time i was programming microprocessors, was back with the Z80 in assembly language.
I am also teaching myself C++ and seems to be going quite well.
I have decided to write my own 'library' for driving 7 segment LED's. The reason for writing my own, rather then using an existing one is to aid with the learning process. I'm quite pleased to say it works ( it may not be the most efficient code)
The books I have on C++ are great, but i do find sometimes the explanation of concepts seem to get lost.
what I would like to know, how do you go about initialising an object class in setup() and using it in loop()? I have this sneaky suspicion that it involves creating the object on the heap, and passing a pointer to the object over somehow.
I could just initialise it once in loop(), and make my own continuous loop afterwards, but there are other things done between the and of a loop() and the beginning of the next loop() (things like timer interrupts).
I will post the code im using, but not the library unless asked to, as it is quite a few lines.
^^ Obviously this does not compile ^^
^^ This does, and runs fine, but may not achieve what I want ^^
I'm not sure if I have used the right wording, or even asked the right question. Thank you for any help in advance. Dave