有時候需要在一個類中定義另外一個類,即嵌套類。為隱藏嵌套類某些公共方法的實現細節,在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();
};
};