力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
有时候需要在一个类中定义另外一个类,即嵌套类。为隐藏嵌套类某些公共方法的实现细节,在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();
 };
};


posted on 2013-01-23 23:26 力为 阅读(2116) 评论(1)  编辑 收藏 引用 所属分类: 4. C++ FAQ

评论

# re: 当嵌套类遇见API 2013-01-24 08:59 岁月漫步
需要把嵌套类显式的导出,也就是说外部类导出并不会将嵌套类同时导出
嗯,记住了  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理