Redefinitio of void

Hello, so i'm trying to get the gist of programming on arduino with OO and failing miserable for a few days already.
My question first is on this:

#ifndef ArduinoLed_h
#define ArduinoLed_h

#include "Arduino.h"

class ArduinoLed {
    public:
        void setup();
        void delayBlink(int delayTime);
};

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void delayBlink(int delayTime) {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(delayTime);
    digitalWrite(LED_BUILTIN, LOW);
    delay(delayTime);
}

#endif

i create this class to test things up and tried to run on the main.cpp the PlatformIO creates as default for arduino projects

#include <Arduino.h>
#include <ArduinoLed.h>

ArduinoLed teste;

void setup() {
  teste.setup();
}

void loop() {
  teste.delayBlink(3000);
}

and get the compile error of "note: 'void setup()' previously defined here"

why it happens ? i read that the code is mashed as if it were a single file but shouldn't the setup on the first class be something completely out of the main scope ?
and a separate question, i did that following some instructions out there but i really don't need to create a instance with "new" ?

shouldn't the setup on the first class be something completely out of the main scope ?

It would be if it was defined like this

void setup() {
    ArduinoLed::pinMode(LED_BUILTIN, OUTPUT);
}

otherwise the compiler has no idea that it belongs to the class

EDIT

WHOOPS on my part - right idea, wrong implementation

IGNORE the code I posted and read reply #2

Did you mean

void ArduinoLed :: setup() 
{
    pinMode(LED_BUILTIN, OUTPUT);
}

void ArduinoLed ::delayBlink(int delayTime) 
{
    digitalWrite(LED_BUILTIN, HIGH);
    delay(delayTime);
    digitalWrite(LED_BUILTIN, LOW);
    delay(delayTime);
}

?

"otherwise the compiler has no idea that it belongs to the class"
Yeah i started to notice that now

TheMemberFormerlyKnownAsAWOL:
Did you mean

void ArduinoLed :: setup() 

{
    pinMode(LED_BUILTIN, OUTPUT);
}

void ArduinoLed ::delayBlink(int delayTime)
{
    digitalWrite(LED_BUILTIN, HIGH);
    delay(delayTime);
    digitalWrite(LED_BUILTIN, LOW);
    delay(delayTime);
}


?

so, just by being in the same file doesn't makes it scope of the class. And the :: operator would especify this ?
I were thinking on my work what could be wrong and i remember that i just pasted a code to edit and didn't notice the setup funcion is out of the class {}'s. If i move those functions inside the class brackets, would it work the same ?
Anyway getting home i gonna try this. Thanks the help