【发布时间】:2016-01-19 16:20:42
【问题描述】:
向我的项目添加命名空间时出现以下错误:
CPoolElement.h:
#ifndef CPOOLELEMENT_H_
#define CPOOLELEMENT_H_
namespace TestName {
class CPoolElement {
public:
CPoolElement();
virtual ~CPoolElement();
};
}
#endif /* CPOOLELEMENT_H_ */
CPoolElement.cpp:
#include "CPoolElement.h"
namespace TestName {
CPoolElement::CPoolElement() {
// TODO Auto-generated constructor stub
}
CPoolElement::~CPoolElement() {
// TODO Auto-generated destructor stub
}
}
CRecordingPoolElement.cpp:
#include "CRecordingPoolElement.h"
namespace TestName {
CRecordingPoolElement::CRecordingPoolElement() {
// TODO Auto-generated constructor stub
}
CRecordingPoolElement::~CRecordingPoolElement() {
// TODO Auto-generated destructor stub
}
}
CRecordingPoolElement.h:
#ifndef CRECORDINGPOOLELEMENT_H_
#define CRECORDINGPOOLELEMENT_H_
#include "CPoolElement.h"
namespace TestName {
class CRecordingPoolElement : public CPoolElement{
public:
CRecordingPoolElement();
virtual ~CRecordingPoolElement();
};
}
#endif /* CRECORDINGPOOLELEMENT_H_ */
CTwo.h:
#ifndef CTWO_H_
#define CTWO_H_
class CPoolElement;
namespace TestName {
class CTwo {
public:
CTwo();
virtual ~CTwo();
CPoolElement* GetElm();
};
}
#endif /* CTWO_H_ */
CTwo.cpp:
#include "CTwo.h"
#include "CRecordingPoolElement.h"
namespace TestName {
CTwo::CTwo() {
// TODO Auto-generated constructor stub
}
CTwo::~CTwo() {
// TODO Auto-generated destructor stub
}
CPoolElement* CTwo::GetElm() {
return new CRecordingPoolElement();
}
}
错误:
“错误:TestName::CPoolElement* TestName::CTwo::GetElm() 的原型与 TestName::CTwo 类中的任何一个都不匹配”
我无法理解是什么问题?原型相同,没有循环头。
-
此外,如果我删除命名空间的声明,我不会收到错误。
- 那么如何在使用命名空间时修复此错误?
- 为什么使用命名空间会在我的代码中添加错误?
【问题讨论】:
-
您是否尝试过在 CTwo.h 的命名空间内向前声明
class CPoolElement;?
标签: c++ namespaces function-prototypes