Ich versuche zu verstehen, wie explizite Konstruktor Aufruf im Haupt funktioniert mit dem folgenden Code.explizite Verwendung von Konstruktor Aufruf in main als Funktionsaufruf Parameter
#include<iostream>
using namespace std;
class Dependency1
{
bool init;
public:
Dependency1() : init(true) {
std::cout << "Dependency1 construction"
<< std::endl;
}
void print() const {
std::cout << "Dependency1 init: "
<< init << std::endl;
}
};
class Dependency2 {
Dependency1 d1;
public:
Dependency2(const Dependency1& dep1): d1(dep1){
std::cout << "Dependency2 construction ";
print();
}
void print() const { d1.print(); }
};
void test(const Dependency1& dd1)
{
cout << " inside Test \n";
dd1.print();
}
int main()
{
test(Dependency1());
Dependency2 D1(Dependency1()); // this line does not work
return 0;
}
Funktion Test aufgerufen wird, wo Konstruktor abhaengigkeit1() als Funktionsaufruf statt verwendet wird abhaengigkeit1 :: abhaengigkeit1() und der Code ausgeführt wird völlig in Ordnung.
Wenn ich jetzt ein ähnliches Konzept verwende, um ein Objekt D1 von Dependency2 zu erstellen, funktioniert es nicht. Scheint, dass ich hier etwas falsch mache, basierend auf falschem Verständnis.
müssen wissen, wie der Compiler auch in Haupt abhaengigkeit1() Aufruf löst, wenn Umfang Auflösung nicht verwendet wird und warum es nicht funktioniert, wenn ich es als Parameter in Konstruktor Dependency2
Danke, verwenden Anand
+1 Einfach kurz und verständlich. –
danke, aber warum es nicht funktioniert, wenn ich ähnliche Sache verwenden, um Dependency2-Objekt zu erstellen. – Anand
@Anand: Überprüfen Sie meine Antwort. –