Вы можете частично разоблачить интерфейсы класса для указанного клиента, наследуя его от класса интерфейса.
class FooA_for_FooB
{
public:
virtual void Hello() = 0;
virtual void Hello2() = 0;
};
class FooA : public FooA_for_FooB
{
private: /* make them private */
void Hello() override;
void Hello2() override;
private:
void Hello3();
int m_iData;
};
class FooB
{
void fun()
{
FooA objA;
FooA_for_FooB &r = objA;
r.Hello() // right
r.Hello2() // right
objA.Hello3() // compile error
objA.m_iData = 0; // compile error
}
};
class FooC
{
void fun()
{
FooA objA;
objA.Hello() // compile error
objA.Hello2() // compile error
objA.Hello3() // compile error
objA.m_iData = 0; // compile error
}
};
Здесь управление доступом улучшено базовым классом FooA_for_FooB
. По ссылке типа FooA_for_FooB
, FooB
может получить доступ к членам, определенным в FooA_for_FooB
. Тем не менее, FooC
не может получить доступ к этим членам, поскольку они были переопределены как частные члены в FooA
. Ваша цель может быть достигнута, если вы не используете тип FooA_for_FooB
в FooC
или в других местах, кроме FooB
, который можно сохранить, не обращая внимания.
Этот подход не нуждается в friend
, что делает вещи простыми.
Аналогичную вещь можно сделать, сделав все частным в базовом классе и выборочно обернув и выставив некоторые из членов как общедоступные в производном классе. Однако этот подход может иногда требовать уродливого понижения. (Потому что базовый класс станет «валютой» среди всей программы.)
Действительно, даже «найти все» в пустых ограниченных коллекциях считается несоответствием, а курсор не работает. responsetiveMongoOperations.tail (new Query (), Event.class) возвращает мертвый курсор, как и аннотированный репозиторий. Spring документы просто дублируют документы mongo, в которых указано
Пригодные для использования курсоры могут стать мертвыми или недействительными, если либо: курсор возвращает документ в «конец» коллекции, а затем приложение> удаляет этот документ.
blockquote>Только обходной путь, по-видимому, является исходной фиктивной записью, вставленной до подписки.