Bill
Bill

Reputation: 310

Class implementation in multiple files

I am trying to implement a class in different cpp files. I understand it is a legitimate thing to do in C++ if the member functions are independent. However one of the member function uses another member function such as in this case:

In function1.cpp

#include "myclass.h"
void myclass::function1()
{ 
    function2();
}

In function2.cpp

#include "myclass.h"
void myclass::function2()
{
....
}

I will get an error of undefined reference to function2. It doesn't work by adding this pointer either. Do I need to declare it in some way in function1.cpp? Thanks~

The header file includes declaration of both functions. It works when function1 and function 2 are in the same file but not when I separate them. I also believe I've added both cpp in the project. I am using Qt creater btw.

Upvotes: 14

Views: 8481

Answers (3)

Armen Tsirunyan
Armen Tsirunyan

Reputation: 132994

As long as myclass.h contains the definition of the class with the declarations of the member functions, you should be fine. Example:

//MyClass.h
#ifndef XXXXXXXX
#define XXXXXXXX
class MyClass
{
  public:
   void f1();
   void f2();
};
#endif

//MyClass1.cpp
#include "MyClass.h"
void MyClass::f1()
{
};

//MyClass2.cpp
#include "MyClass.h"
void MyClass::f2()
{
     f1(); //OK
}

Upvotes: 16

n0rmzzz
n0rmzzz

Reputation: 3848

Everything seems fine to me. There might be something wrong with your build process. You should compile the two .cpp files (using -c option) into object files and link them together in the next stage.

Upvotes: 0

Luchian Grigore
Luchian Grigore

Reputation: 258608

This should work. If you get a linker error, make sure you compile both your cpp files, that's what's most probably causing your error.

Upvotes: 1

Related Questions