有时候需要在一个类中定义另外一个类,即嵌套类。为隐藏嵌套类某些公共方法的实现细节,在cpp中实现了嵌套类的成员函数。
在本模块中访问嵌套类的方法,编译和链接都没有问题。
class Out
{
public:
struct NestedClass
{
void doSomething();
};
};
调用
Out::NestedClass nc;
nc.doSomething();
假如需要暴露Out类(作为动态库)给其他模块使用
class DECL_API Out
{
public:
struct NestedClass
{
void doSomething();
};
};
这时候能在其他模块(DLL/EXE)中调用嵌套类,会链接成功吗?
答案是否定的。需要把嵌套类显式的导出,也就是说外部类导出并不会将嵌套类同时导出。
class DECL_API Out
{
public:
struct DECL_API NestedClass
{
void doSomething();
};
};