Как “клонировать” объект в объект подкласса?

В университете, когда я делал большинство вещей под Unix Солярис, я использовал gdb.

Однако я пошел бы с valgrind в соответствии с Linux.

24
задан sampathsris 9 June 2015 в 09:42
поделиться

5 ответов

Нет никаких средств сделать это автоматически встроенными в язык ...

Один из вариантов - добавить конструктор к классу B, который принимает класс A в качестве аргумента.

Тогда вы можете сделать:

B newB = new B(myA);

В этом случае конструктор может просто скопировать соответствующие данные по мере необходимости.

10
ответ дан 29 November 2019 в 00:06
поделиться

Создайте ctor в B, который позволяет передавать объект типа A, затем скопируйте поля A и установите поля B.

1
ответ дан 29 November 2019 в 00:06
поделиться

Я бы добавил конструктор копирования в A, а затем добавил новый конструктор в B, который берет экземпляр A и передает его конструктору копии базы.

11
ответ дан 29 November 2019 в 00:06
поделиться

Нет, вы не можете этого сделать. Один из способов добиться этого - добавить конструктор в классе B, который принимает параметр типа B, и добавить данные вручную.

Таким образом, вы можете получить что-то вроде этого:

public class B
{
  public B(A a)
  {
    this.Foo = a.foo;
    this.Bar = a.bar;
    // add some B-specific data here
  }
}
0
ответ дан 29 November 2019 в 00:06
поделиться

Вы можете создать метод Convert для класса B, который принимает базовый класс.

public ClassB Convert(ClassA a)
{
   ClassB b = new ClassB();
   // Set the properties
   return b;
}

У вас также может быть конструктор для ClassB, принимающий объект ClassA.

0
ответ дан 29 November 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: