[英]initializing pointer to protected member functions
我有這個問題:
在頭文件中:
class D : public B
{
//...
private:
typedef char* (B::*psbposfun_t)() const;
static psbposfun_t ms_aposf[2][3];
//...
};
在源文件中:
D::psbposfun_t D::ms_aposf[2][3] =
{
{
&B::fa1,
&B::fa2,
&B::fa3
},
{
&B::fb1,
&B::fb2,
&B::fb3
}
};
編譯器抱怨fa1 ... fb3方法受到保護。 實際上,它們在B中受到保護,但是我正在初始化一個屬於D的成員,該成員源自B。
我嘗試在類(D)中初始化ms_aposf,但編譯器抱怨這不是初始化它的地方。
因此,除了在構造函數中實現一次性初始化之外,還會有人知道如何規避此問題嗎?
使用D::
代替:
D::psbposfun_t D::ms_aposf[2][3] =
{
{
&D::fa1,
&D::fa2,
&D::fa3
},
{
&D::fb1,
&D::fb2,
&D::fb3
}
};
由於D
繼承了這些函數,因此可以通過D
來訪問它們,但可用作B::
指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.