Error: Function not declared in the scope I want to make a timer library. The cpp file I have written is:

#include "avr/interrupt.h"
#include "Arduino.h"

#include "AllTimer.h"

AllTimer::AllTimer()
{}

void AllTimer::dofun(void)
{
    TIFR1 |= _BV(OCF1A);
    TCCR1B = 0X00;
    digitalWrite(13,!digitalRead(13));
}

void AllTimer::setTimer(void)
{
    TCNT1 = 0x0BDC;
    TCCR1A = 0x00;
    TCCR1B = 0x00;
    TCCR1B |= (1&lt;&lt;CS12) &amp;&amp; (1&lt;&lt;CS10);
    TIMSK1 |= (1&lt;&lt;TOIE1);
    sei();
}

ISR (TIMER1_OVF_vect)
{
    dofun();
}


And the header file:

#ifndef AllTimer_h
#define AllTimer_h

class AllTimer{
public:
    AllTimer();
    void setTimer(void);

private:
    void dofun(void);
};

#endif


While compiling the file i am getting the following error:

sketch_jan05a.cpp: In function ‘void __vector_13()’:
sketch_jan05a.cpp:34:9: error: ‘dofun’ was not declared in this scope
Because in the call:

 dofun();


you should put from which class you are calling that function.
In your case:

AllTimer::dofun();


in that case your function must be declared as static method.

EDIT:
Thanks to the comment:

I'm not pretty sure if your code reflects what you want to do. Because you can create your timer after defining the class:

Alltimer mytimer;


and call the method as a normal function (it must be declared as public):

ISR (TIMER1_OVF_vect)
{
    mytimer.dofun();
}


But it is hard to say since I m not sure what you want to do.