簡體   English   中英

范圍解析運算符在類名中的用途是什么意思

[英]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
};

我認為SomeClassOtherClass所在的命名空間

class BaseClass {};
namespace SomeClass
{
    class OtherClass;
};

class SomeClass::OtherClass : public BaseClass
{
  // stuff in here
};

某些類是基類的名稱,而其他類是派生類,它鏈接派生類的內部和冒號派生類之后鏈接基類。 在你的問題中,答案是兩個基類,並提到一個派生類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM