이 코드를 발견했습니다.클래스 이름에 사용 된 범위 분석 연산자는 무엇을 의미합니까
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClass는 클래스입니다. 따라서 SomeClass는 SomeClass의 범위 내에있는 클래스입니까? 나는 이런 식으로 한 번도 본 적이 없다.
그래서 그것이 의미하는 바가 무엇입니까?
이 코드를 발견했습니다.클래스 이름에 사용 된 범위 분석 연산자는 무엇을 의미합니까
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClass는 클래스입니다. 따라서 SomeClass는 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 관용구는 지연된 정의가있는 내부 클래스를 잘 사용합니다.
내가 SomeClass
생각은 OtherClass
그것은 OtherClass은 SomeClass의 내부 클래스는 것을 의미
class BaseClass {};
namespace SomeClass
{
class OtherClass;
};
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
};
SomeClass가 순수한 네임 스페이스 인 경우이 구문이 유효한지 확실하지 않습니다. class NameSpaceName :: ClassName : public BaseClass –
상주하는 네임 스페이스입니다. 이미 이미 선언 된 것이 더 낫습니다. 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
};
일부 클래스는 기본 클래스의 이름이고, 다른 클래스가 파생 클래스의 내부를 연결하고 콜론 파생 클래스 링크의 기본 클래스 이후 파생 클래스입니다. 귀하의 질문에 대답은 두 개의 기본 클래스이고 하나의 파생 된 클래스는 언급입니다.
Google 용어는 중첩 된 클래스입니다. – chris