5

私はこのコードに出くわしました。

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

SomeClassはクラスなので、OtherClassはSomeClassのスコープ内に存在するクラスでしょうか?私はそれがこのように行われるのを見たことがありません。

それで、それはそれが何を意味するのですか?

4

4 に答える 4

11

多分OtherClassはSomeClassのスコープ内に存在するクラスですか?

チェックマークを付けてください。それが意味するところです。

OtherClassこれは、内部で宣言された後に定義するために使用されますSomeClass

class SomeClass {
    class OtherClass;
    OtherClass* GetOtherClassInstance() { ...}
};
class SomeClass::OtherClass {
} 

内部クラスが外部クラスのコンテキストでのみ意味をなす場合は、これを行うことができます。

class Vector {
  class Iterator;
  Iterator* GetStart();
};
class Vector::Iterator {
   details.
}

他の場所で述べたように、pimplイディオムは、定義が延期された内部クラスの優れた使用法です。

于 2012-05-04T16:30:11.627 に答える
3

これは、OtherClassがSomeClassの内部クラスであることを意味します。すでにそこで宣言されている方がいいです。単純なイディオムに適しています。

struct my_object {
  ...

private:
  struct my_impl;
  my_impl * pimpl;
};

// in a cpp file...
struct my_object::my_impl {
  ...implementation details of my_object
};
于 2012-05-04T16:31:19.737 に答える
0

SomeClass住んでいる名前空間だと思いOtherClassます

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

class SomeClass::OtherClass : public BaseClass
{
  // stuff in here
};
于 2012-05-04T16:31:12.403 に答える
0

一部のクラスは基本クラスの名前であり、他のクラスは派生クラスの内部をリンクする派生クラスであり、コロン派生クラスの後に基本クラスをリンクします。あなたの質問では、答えは2つの基本クラスであり、1つの派生クラスが言及されています。

于 2013-07-14T11:00:36.390 に答える