Laden...

Klasse und Namespace gleichen Namens (Mehrdeutiges Symbol in C++/CLI)

Erstellt von MrSparkle vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.506 Views
MrSparkle Themenstarter:in
5.658 Beiträge seit 2006
vor 13 Jahren
Klasse und Namespace gleichen Namens (Mehrdeutiges Symbol in C++/CLI)

Hallo allerseits,

ich hab ein Problem mit einem Projekt unter C++/CLI.

Ich verwende darin eine unmanaged Klasse namens Mesh. Außerdem verwende ich eine .NET-Assembly, die den Namespace Mesh beinhaltet.

Wenn ich jetzt die Klasse Mesh irgendwo verwenden will, sagt mir der Compiler "Mehrdeutiges Symbol" (Ambiguous Symbol).

Was kann ich machen, um sowohl die Klasse als auch den Namespace Mesh in einem Projekt zu verwenden?

Vielen Dank schonmal,
Christian

Weeks of programming can save you hours of planning

1.665 Beiträge seit 2006
vor 13 Jahren

Wenn es um die Verwendung geht, wo der Compiler meckert, dann sollte es genügen, die Klasse mit ihrem qualifizierten Namen anzusprechen.

MrSparkle Themenstarter:in
5.658 Beiträge seit 2006
vor 13 Jahren

Wie sieht denn ein qualifizierter Name in unmanaged Code aus? Genauso wie in .NET, also Namespace.Klassenname?

Wie kriegt man denn raus, in welchem Namespace die Klasse deklariert wurde, oder gibt es in C++ auch Klassen ohne Namespace?

Weeks of programming can save you hours of planning

656 Beiträge seit 2008
vor 13 Jahren

Wenn du das ganze in C++ machst, müsste es die übliche Scope-Resolution Notation per :: sein. In C# ist's wie gehabt per .

MrSparkle Themenstarter:in
5.658 Beiträge seit 2006
vor 13 Jahren

Soweit ich weiß, können doch Klassen in C++ ohne einen Namespace deklariert werden. Wie wäre dann der qualifizierte Name?

Weeks of programming can save you hours of planning

W
955 Beiträge seit 2010
vor 13 Jahren

Du meonst den globalen Namensraum, ::myclass

X
1.177 Beiträge seit 2006
vor 13 Jahren

huhu,

Soweit ich weiß, können doch Klassen in C++ ohne einen Namespace deklariert werden.

in c# geht das auch. Da ist es dann - wenn es wider erwarten nicht gefunden wird - "global::"

Aber in c# gibt es vermutlich auch dasselbe Problem, wenn eine Klasse und ein Namespace in dem Fall denselben Namen haben.

😃

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo zusammen,

... weshalb man im Allgemeinen von vornherein alles dran setzen sollte, dass es keine Klassen gibt, die wie Namespaces heißen. Einen guten Schritt in diese Richtung kann man gehen, indem man Namenspaces möglichst konsequent in der Mehrzahl und Klassen möglichst konsequent in der Einzahl benennt. Das ist auch durch die Namenskonventionen von Microsoft gedeckt.

herbivore

MrSparkle Themenstarter:in
5.658 Beiträge seit 2006
vor 13 Jahren

Hallo allerseits,

vielen Dank für die Antworten, es hat so funktioniert. Schön daß man auch hier im Forum auch solche C++-spezifischen Fragen loswerden kann 😃

Schöne Grüße,
Christian

Weeks of programming can save you hours of planning