[英]what does the scope resolution operator used in a class name mean
我遇到了這段代碼。
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClass是一個類,所以也許OtherClass是一個存在於SomeClass范圍內的類? 我從來沒有見過這樣做過。
那么,這意味着什么?
也許OtherClass是一個存在於SomeClass范圍內的類?
給自己一個復選標記。 這就是它的含義。
這用於隨后在SomeClass
中聲明之后定義OtherClass
:
class SomeClass {
class OtherClass;
OtherClass* GetOtherClassInstance() { ...}
};
class SomeClass::OtherClass {
}
如果內部類只在外部類的上下文中有意義,那么可以這樣做。
class Vector {
class Iterator;
Iterator* GetStart();
};
class Vector::Iterator {
details.
}
正如其他地方所提到的,pimpl習語是對具有延遲定義的內部類的極好用法。
這意味着OtherClass是SomeClass的內部類。 最好已經在那里宣布了。 適合pimpl成語:
struct my_object {
...
private:
struct my_impl;
my_impl * pimpl;
};
// in a cpp file...
struct my_object::my_impl {
...implementation details of my_object
};
我認為SomeClass
是OtherClass
所在的命名空間
class BaseClass {};
namespace SomeClass
{
class OtherClass;
};
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
};
某些類是基類的名稱,而其他類是派生類,它鏈接派生類的內部和冒號派生類之后鏈接基類。 在你的問題中,答案是兩個基類,並提到一個派生類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.