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.
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
}
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.
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.
精彩评论