C++ 带内联析构函数的未定义引用
我有一个内联构造函数和析构函数的类,我还有一个用于该类的静态方法。我在内联析构函数中调用了该静态方法,但该静态方法的未定义引用出现了链接器错误。我很确定它是编译的,并且与对象链接。这是密码C++ 带内联析构函数的未定义引用,c++,C++,我有一个内联构造函数和析构函数的类,我还有一个用于该类的静态方法。我在内联析构函数中调用了该静态方法,但该静态方法的未定义引用出现了链接器错误。我很确定它是编译的,并且与对象链接。这是密码 // CFoo.h namespace barname { class CFoo { public: CFoo(); ~CFoo(); static void fooMethod(); }; inline CFoo::CFoo() { } inline CFoo::~CFoo()
// CFoo.h
namespace barname {
class CFoo
{
public:
CFoo();
~CFoo();
static void fooMethod();
};
inline CFoo::CFoo()
{
}
inline CFoo::~CFoo()
{
fooMethod();
}
}
// SomeOtherSource.cpp
namespace barname
{
void CFoo::fooMethod()
{
}
}
这段代码似乎很好,并且可以编译。这里是对代码的一个稍微修改的工作版本
#包括
#包括
#包括
名称空间名称
{
类CFoo
{
公众:
CFoo();
~CFoo();
静态方法();
};
内联CFoo::CFoo()
{
}
内联CFoo::~CFoo()
{
方法();
}
void CFoo::foodmethod()
{
标准::cout
在其他文件中
#include "CFoo.h"
namespace barname
{
void CFoo::fooMethod()
{
}
}
编译在XCook 4.6 <代码>内联CQuoY()::CcHook()/<代码>和代码>内联CQuoY()::~cCythor()/代码>甚至不是有效的C++。如果你花时间去SSCCE,谢谢,并且请尝试发布实际编译的实际代码,因为与你的问题的评论相反,这不。(并且固定,这在CLAN上编译得很好)。我无法重现您所描述的问题(在修复语法错误后)。上面的SSCCE似乎未能捕获原始代码中的重要内容。是的。但fooMethod是在另一个源文件中定义的。
#ifndef con001_CFoo_h
#define con001_CFoo_h
namespace barname {
class CFoo
{
public:
CFoo();
~CFoo();
static void fooMethod();
};
inline CFoo::CFoo()
{
}
inline CFoo::~CFoo()
{
}
}
#endif
#include "CFoo.h"
namespace barname
{
void CFoo::fooMethod()
{
}
}