C ++ So definieren Sie eine Mitgliedsvariable, die entweder in einen Konstruktor übergeben oder in einem Konstruktor konC++

Programme in C++. Entwicklerforum
Anonymous
 C ++ So definieren Sie eine Mitgliedsvariable, die entweder in einen Konstruktor übergeben oder in einem Konstruktor kon

Post by Anonymous »

Was ist eine Möglichkeit, eine Mitgliedsobjektvariable einer Klasse zu definieren, die entweder < /p>

in den Konstruktor übergeben werden kann (Eigentum bleibt extern zur Klasse) oder) oder < /li>
In dem Konstruktor der Klasse (Eigentum ist mit dieser Klasse) < /li>
< /ul>
Grundsätzlich möchte ich so etwas wie etwas wie Dies (welches kompiliert nicht, weil versucht wird, nicht konstante Lvalue-Referenzen auf Temporary zu binden): < /p>

Code: Select all

class A;
class B{
public:
B() : m_a { A() } {}  // 
const
Referenz ist keine Option, da ich Zugriff auf Nicht-Zugriff benötige

Code: Select all

const< /code> Methoden des Objekts.
std::unique_ptr
ist keine Option, da das Eigentum beim Anrufer des Konstruktors der Klasse bleibt. ? Beide scheinen irgendwie komisch zu sein. Erstellen eines Objekts M_AOBJ , das überhaupt nicht verwendet wird, wenn der zweite Konstruktor verwendet wird. Und mit Shared_ptr s, obwohl ich das Eigentum nicht unbedingt halten möchte.

Code: Select all

class A;
class B{
public:
B() : m_a { m_aObj } {}
B(A& a) : m_a { a } {}
useA() { m_a.do_something(); }
private:
A& m_a;
A m_aObj;
};
< /code>
class A;
class B{
public:
B() : m_a { std::make_shared() } {}
B(std::shared_ptr a) : m_a {a} {}
useA() { m_a->do_something(); }
private:
std::shared_ptr m_a;
};

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post