好的就是这种情况。
//foo.h
struct A1{
struct A2{};
};
//bar.h
#include "MyString.h"
class A2; //note, not including foo.h
TEMPLATE_INSTIANTIATE_MAP_OF_TYPE(String,A2*); //assume compiler doesn't do this
是否有可能使上述情况有效?我尝试创建MyMap<String,A1::A2*> m;
,但编译器抛出未定义的引用错误。没有bar.h导入foo.h可以进行上述工作吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
这是一种在类定义之外声明嵌套类的方法。 class Logic是外部类。 LogicImp是前向声明的结构。
class Logic
{
public:
Logic();
~Logic();
private:
struct LogicImp;
std::unique_ptr<LogicImp> limp_;
};
struct Logic::LogicImp
{
int nLogical_;
};
Logic::Logic():limp_(new LogicImp())
{
}
Logic::~Logic()
{
}