有時(shí)候需要在一個(gè)類中定義另外一個(gè)類,即嵌套類。為隱藏嵌套類某些公共方法的實(shí)現(xiàn)細(xì)節(jié),在cpp中實(shí)現(xiàn)了嵌套類的成員函數(shù)。
在本模塊中訪問嵌套類的方法,編譯和鏈接都沒有問題。
class Out
{
public:
struct NestedClass
{
void doSomething();
};
};
調(diào)用
Out::NestedClass nc;
nc.doSomething();
假如需要暴露Out類(作為動(dòng)態(tài)庫)給其他模塊使用
class DECL_API Out
{
public:
struct NestedClass
{
void doSomething();
};
};
這時(shí)候能在其他模塊(DLL/EXE)中調(diào)用嵌套類,會(huì)鏈接成功嗎?
答案是否定的。需要把嵌套類顯式的導(dǎo)出,也就是說外部類導(dǎo)出并不會(huì)將嵌套類同時(shí)導(dǎo)出。
class DECL_API Out
{
public:
struct DECL_API NestedClass
{
void doSomething();
};
};