Поскольку play
хочет делать вещи, которые зависят от b1
и b2
, они являются параметрами из play
.
Как это:
class c
{
public:
void play(const b& oneB, b& otherB)
{
int i = oneB.get();
otherB.add(i * 2);
}
}
int main()
{
b b1, b2;
c c1;
b1.add(10);
b1.add(20);
c1.play(b1, b2);
}
Мы передаем ссылки (&
), поскольку ваш лексер и токенизатор, скорее всего, имеют внутреннее состояние, и вы не хотите копировать их, но используете те же объекты.
Обратите внимание, что это C ++, а не Java, поэтому функция main
является глобальной, а не функцией-членом какого-то класса.
Другая возможность - позволить другим объектам быть частью состояния c:
class c
{
public:
c(const b& oneB, b& otherB) : m_b1(oneB), m_b2(otherB) {}
void play()
{
int i = m_b1.get();
m_b2.add(i * 2);
}
private:
const b& m_b1;
b& m_b2;
}
int main()
{
b b1, b2;
c c1(b1, b2);
b1.add(10);
b1.add(20);
c1.play();
}
Поскольку у вас есть проблемы с очень простыми понятиями, я предлагаю вам выбрать хорошую книгу по C ++ - вы можете найти списки здесь, в SO, если будете искать их.