Reputation: 310
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
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
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
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