Скажем, у меня есть базовый класс A и производный класс B, который добавляет некоторые дополнительные члены. Теперь я хотел бы иметь функцию setter для класса B, которая напрямую присоединяется к ее собственным членам, но назначает производные члены в пакетном режиме с использованием временного объекта A. Вот пример кода: «Могу ли я»Могу ли я получить доступ к «базовой части» моего объекта, как если бы это был собственный объект?
class A
{
public:
int x;
int y;
A(int arg1, int arg2)
: x(arg1), y(arg2) {}
};
class B : public A
{
public:
int z;
B(int arg1, int arg2, int arg3)
: A(arg1, arg2), z(arg3) {}
void setB(int arg1, int arg2, int arg3) {
/*something here*/ = A(arg1, arg2);
this->z = arg3;
}
};
// редактировать Я предполагаю, что не было ясно, что этот вопрос не является на самом деле а скорее «Как я могу?». Чтобы быть еще более конкретно: Что я могу поместить вместо /*something here*/
чтобы SETB() на самом деле работает так же, как:
void setB(int arg1, int arg2, int arg3) {
this->x = arg1;
this->y = arg2;
this->z = arg3; }
вы пытались его самостоятельно? я не вижу проблем с этим. также, подумайте о том, чего вы хотите достичь, это, похоже, не является хорошей идеей в целом. – JKreiser
Вы * можете, * но будьте очень внимательны здесь. Если вы планируете ссылаться на объекты 'B' через' A', вы можете включить виртуальный деструктор, чтобы получить правильное поведение разрушения с полиморфными типами во всех контекстах, в которых вы могли бы их использовать, и взглянуть на [срез проблема.] (http://stackoverflow.com/questions/274626/what-is-object-slicing) – jaggedSpire
@jaggedSpire В этом случае могут возникнуть проблемы с разрезом? Я не думаю, что это возможно, но, возможно, я ошибаюсь. – Brian