class TClass
{
class EmbeddClass
{
public:
....
protected:
virtual ~EmbeddClass() {}
}
boost::scoped_ptr<EmbeddClass> scpEmbeddClass;
}
vs2010抱怨上述代碼。我可以通過將~EmbeddClass
定義爲公共功能來解決這個問題。錯誤C2248:無法訪問在類中聲明的受保護成員
問題>這個問題的原因是什麼?是否因爲scoped_ptr的析構函數無法訪問受保護的~EmbeddClass
?在我看來,shared_ptr沒有這樣的問題。
謝謝
對於'shared_ptr',取決於你如何初始化它。如果你試圖存儲'EmbeddClass'(而不是派生類型),你實際上可能會遇到這個問題。 –