我有带有声明的 hpp 文件:
namespace X {
class Y {
public:
[other functions]
inline float basicFunction();
int someFunction();
[other functions]
};
}
在 cpp 文件中:
namespace X {
[implementations etc.]
inline float Y::basicFunction() {
return someValue * someMath / moreMath;
}
int Y::someFunction() {
return basicFunction() * 100;
}
[other functions]
}
我在其他 cpp 文件中使用它,但我认为这不是问题。编译:
g++ -c someclass.cpp -o someclass.o -std=c++11
g++ -c main.cpp -o main.o -std=c++11
g++ main.o someclass.o -o main -std=c++11 -O0
抛出错误:
main.o: In function `main':
main.cpp:(.text+0x4d9): undefined reference to `X::Y::someFunction()'
为什么?我怎样才能正确编译它?
我知道那someFunction()
是没用的,但这被多次调用,我就是喜欢这样。
上面的所有代码都不是真实的,所以可能有错误,但在我的程序上它(我认为)是正确的
我尝试了许多组合(两个函数具有相同的返回类型,都内联,没有内联等)并且没有效果。