当嵌套类遇见API
有时候需要在一个类中定义另外一个类,即嵌套类。为隐藏嵌套类某些公共方法的实现细节,在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();};};
补充:综合编程 , 其他综合 ,