Я не уверен, что у меня есть вся терминология, чтобы иметь возможность описать вопрос, но вот как я опишу, что мне интересно:Как подходить к внедрению методов класса, когда эти методы зависят от другого класса?
Предположим, у меня есть класс A и второй класс B, который использует данные из его методов в
class A
{
data1
data2
etc...
}
class B
{
some_data
method1
{
// do stuff with some_data and A.data1, A.data2
}
method2
{
// do other stuff with some_data and A.data1, A.data2
}
}
Что мне любопытно, о том, является ли как общности, считается, лучше сделать что-то вроде: 1.
class B
{
B(A *a)
{
this->a_ptr = a;
}
A *a_ptr
some_data
method1()
{
// do stuff with a_ptr->data1, a_ptr->data2
}
method2()
{
// do other stuff with a_ptr->data1, a_ptr->data2
}
}
против
2.
class B
{
some_data
method1(A *a)
{
// do stuff with a->data1, a->data2
}
method2(A *a)
{
// do other stuff with a->data1, a->data2
}
}
Есть мнение о том, какой подход использовать? Если да, то какие причины предпочитают один подход над другим?
Ehm, метод 1 должен быть записан как унаследованный класс. 'class b: public A' Если я что-то не хватает. –
Спасибо, но, может быть, я немного смущен. Я всегда думал, что унаследованные классы должны использоваться, когда у вас есть отношение «is-a». Поэтому в этом случае я думаю, что это не уместно. Было бы немного похоже на то, что класс «водитель» наследуется от класса «автомобиль», что кажется мне странным, но классный водитель все еще должен знать, например, если автомобиль является автоматической/механической коробкой передач, оставшимся бензином и т. Д. – user1790399