我有一个类,我内联构造函数和析构函数,我也有一个静态方法用于该类。我在内联析构函数中调用了静态方法,但我对该静态方法有一个链接器错误未定义的引用。我很确定它已经编译并与对象链接。这是代码,
// 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()
{
}
}
看起来代码很好并且正在编译。
答案 0 :(得分:1)
以下是代码
的略微修改的工作版本#include <iostream>
#include <string>
#include <vector>
namespace barname
{
class CFoo
{
public:
CFoo();
~CFoo();
static void fooMethod();
};
inline CFoo::CFoo()
{
}
inline CFoo::~CFoo()
{
fooMethod();
}
void CFoo::fooMethod()
{
std::cout << "in fooMethod" << std::endl;
}
}
int main()
{
barname::CFoo *f = new barname::CFoo();
delete f;
}
答案 1 :(得分:1)
#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()
{
}
}
在XCode 4.6中编译好了