Kopiowanie klasy bazowej, z inteligentnego wskaźnika.

0

Czy takie rozwiązanie jest poprawne?

class Base
{
public:
	Base()
	: m_Foo(0)
	{}
	int GetFoo() { return m_Foo;}
	void SetFoo(int foo) { m_Foo = foo; }
private:
	int m_Foo;
};

class Delivery: public Base
{
public:
	Delivery()
	: Base(), m_Bar(0)
	{}
	Delivery(std::shared_ptr<Base> b)
	: Base(*b.get()), m_Bar(0)
	{}
	int GetBar() { return m_Bar;}
	void SetBar(int foo) { m_Bar = foo; }	
private:
	int m_Bar;
};

Pytam o przekazanie shared_ptr w parametrze konstruktora dla klasy pochodnej.

1

W jakim sensie poprawne? Bo po dodaniu @include <memory> się kompiluje, więc w tym sensie jest poprawne... :)

Ale chodziło Ci zapewne o sens. Więc pytanie: co chcesz osiągnąć? Ja osobiście w podobnym przypadku dałbym w konstruktorze referencję do obiektu typu Base, ale nie wiem, co chcesz zrobić...

No i po co get?

1

Chodziło mi o to czy takie przekazanie ze smart pointera nie będzie UB

Nie będzie. Przekazujesz instancje innych obiektów, więc nie widzę tutaj powodu dla którego miało by to być UB.

1 użytkowników online, w tym zalogowanych: 0, gości: 1