C++ – undefined reference to a static function

c

I have a strange problem when I create a static function in class A and I want to call it from class B function. I get

undefined reference to `A::funcA(int)'

Here is my source code :
a.cpp

#include "a.h"

void funcA(int i) {
    std::cout << i << std::endl;
}

a.h

#ifndef A_H
#define A_H

#include <iostream>

class A
{
    public:
        A();
        static void funcA( int i );
};

#endif // A_H

b.cpp

#include "b.h"

void B::funcB(){
    A::funcA(5);
}

and b.h

#ifndef B_H
#define B_H
#include "a.h"

class B
{
    public:
        B();
        void funcB();
};

#endif // B_H

I'm compiling with Code::Blocks.

Best Answer

#include "a.h"

void funcA(int i) {
    std::cout << i << std::endl;
}

should be

#include "a.h"

void A::funcA(int i) {
    std::cout << i << std::endl;
}

Since funcA is a static function of your class A. This rule applies both to static and non-static methods.

Related Topic