C++ Template Klasse über Managed C++

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
dowhilefor
Moderator
Beiträge: 173
Registriert: 27.02.2009, 15:44
Alter Benutzername: 6SidedDice
Echter Name: Nico Probst
Wohnort: Bochum
Kontaktdaten:

C++ Template Klasse über Managed C++

Beitrag von dowhilefor »

Hallo zusammen,

schwierig dafür nen anständigen Betreff zu finden. :)
Also es geht um folgendes: Ich habe eine c++ template basierte Klasse die ich gerne in C# nutzen würde, auch gerne ohne Templates auf generics umzumappen.

Code: Alles auswählen

template<typename _T>
class Vector3
{
public:
  _T GetLength() const;

 _T X;
 _T Y;
 _T Z;
};
Die Klasse als Managed C++ Wrapper.

Code: Alles auswählen

template<typename _T >
public ref class MVector3
{
                property _T Length
		{
			_T get() { return mData->GetLength(); }
		}

 // ...

Vector3< _T >*		data;
};

und um jetzt noch das Template loszuwerden.

Code: Alles auswählen

public ref class Vector3F : public MVector3<float>
{
};
Soweit so gut, als Assembly kompiliert funktioniert es auch ohne probleme in C#. Ich kann bspw. Length über die property aufrufen, genau wie gewünscht. Aber ...
Ich habe keine Intelisense. Bis auf die geerbten Methoden von Object spuckt weder Intelisense etwas aus, noch finde ich die Methoden/Properties im ObjectBrowser.
Füge ich etwas der Vector3F Klasse direkt hinzu, wird das angezeigt, aber nichts was von MVector3 geerbt wäre.
Ich hätte allerdings schon gerne ein funkionierendes Intelisense.
Kennt jemand dieses Problem? Hat jemand vielleicht eine Lösung? Oder wenigstens eine Erklärung warum das so ist?

Danke schonmal
Nico
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

Re: C++ Template Klasse über Managed C++

Beitrag von kkrahl »

Das Problem ist das Intelisense nur für Managed C# Code funktioniert. So bald du was anderes hast kann das der Runtime(Edit-time)-Compile von Intelisense nicht mehr.

Ab VS 2010 wird das dann ev besser funktionieren.

mfg

Karl
Benutzeravatar
dowhilefor
Moderator
Beiträge: 173
Registriert: 27.02.2009, 15:44
Alter Benutzername: 6SidedDice
Echter Name: Nico Probst
Wohnort: Bochum
Kontaktdaten:

Re: C++ Template Klasse über Managed C++

Beitrag von dowhilefor »

Na mich wundert aber das er kein Problem damit hat wenn ich in managed c++ in der eigentlichen Klasse, die aus C# aus aufrufbar ist, Methoden oder Felder hinzufüge, das dort das Intelisense funktioniert. Aber alle geerbten Eigenschaften aus der Template Klasse sind zwar benutzbar aber weder Intelisense noch der Object Browser zeigt die an. Ich glaube eher es liegt daran das ich eine managed c++ Klasse mit reinen c++ Templates versehe. Allerdings sehe ich keine alternative ohne für jede Template Spezialisierung eine neue Klasse schreiben zu müssen.
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
Antworten