Здравствуйте, Аноним, Вы писали:
А>Вопрос в том как правильно организовать итнерфейс например для модификации объекта класса A через класс С, не раскрывая доступ к private членам.
Ну только оксюморонить не надо. Ты хочешь модифицировать приватный член не предоставляя к нему доступ.
А>Выставление не константного итератора в классе C, делать бы не хотелось, а выставление константного приведет к тому, что весь интерфейс класса A и B придется продублировать в классе С.
Что-то глубоковато для непосредственной модификации A через С.
Ну если уж очень хочется, то можно что-то вроде такого:
class A
{};
class B
{
public:
void do_something(AKey akey, SomeData params)
{
// Поиск объекта A по ключу akey, результат - в переменной pA
pA->... // что-то делаем
}
private:
vector<A> vec_;
};
class C
{
public:
void do_something(BKey bkey, AKey akey, SomeData params)
{
// поиск объекта B по ключу bkey, результат - в переменной pB
pB->do_something(akey, params)
}
private:
vector<B> vec_;
};
BKey и AKey могут быть и индексами, и ещё чем угодно, пригодным для идентификации объекта в наборе.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!