Well I'm getting a linker (unresolved external symbol) error when doing the following:
-I have a class "Object" - it is defined in "object.h".
it has a constructor like: explicit Object(double x, /* lots more */);
in file "object.cpp" I want to give that constructor a body: Object::object(double x) : _x(x) {}
This works.. However if I add the keyword "inline" in the "object.cpp" file:
inline Object::Object(double x) : _x(x) {}
suddenly a linker error pops up! "error LNK2019: unresolved external symbol"
Why? - does it mean I can't use inlining with constructors?
EDIT: actually I notice it is the case for all methods. However if I move all methods to the object.h header fil it DOES work. You can't inline function from outside the header file where the object is defined?
EDIT2: alright a big update, I decided to build a quick test case:
main.cpp:
#include "a.h"
int main ()
{
a t;
t.test(5);
return 0;
}
a.h
class a {
public:
void test (int x);
};
a.cpp
#include <iostream>
#include "a.h"
inline void a::test(int x) {
std::cout << x << std::endl;
}
This gives the following error:
main.obj : error LNK2019: unresolved external symbol "public: void __thiscall a::test(int)" (?test@a@@QAEXH@Z) referenced in function _main
Removal of the "inline" keyword makes the program work.. As does combining "a.h" and "a.cpp" into 1 file.
I really can't think of more information to give :/