Kopiowanie klasy bazowej, z inteligentnego wskaźnika.

Kopiowanie klasy bazowej, z inteligentnego wskaźnika.
AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Czy takie rozwiązanie jest poprawne?

Kopiuj
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.

koszalek-opalek
  • Rejestracja: dni
  • Ostatnio: dni
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?

several
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.