structur und classe mit template?
-
ABer naja das IntelliSense von Visual C++ war ja auch noch nie wirklich gut.
Dann schalt sie doch aus.
-
hmm dann hab ich garkeine mehr.. auch schei.. gibt es keine alternative die man installieren kann?
-
lord_fritte schrieb:
hmm dann hab ich garkeine mehr.. auch schei.. gibt es keine alternative die man installieren kann?
Visual Assist X
Bin sehr zufrieden damit, kostet allerdings etwas.Grüssli
-
lord_fritte schrieb:
Aber kann es sein das so das IntelliSense nicht mehr funktioniert?
Sollte eigentlich nicht passieren, bzw. es liegt nicht am Template. Manchmal hat die IntelliSense-Datenbank ein Problem, da hilft entweder Neu-Erstellen der Projektmappe oder Löschen der Datenbankdatei (*.ncb).
-
Dravere schrieb:
lord_fritte schrieb:
hmm dann hab ich garkeine mehr.. auch schei.. gibt es keine alternative die man installieren kann?
Visual Assist X
Bin sehr zufrieden damit, kostet allerdings etwas.Grüssli
Naja gibt es nicht was was wirklich nur das IntelliSense von C++ verändert und C# läßt wie es ist?
-
Was gefällt dir denn am IntelliSense-System in C++ nicht? Klar, die Ausfälle ab und zu sind halt lästig, aber für mich ist IntelliSense wirklich eine sehr grosse Hilfe...
-
Nexus schrieb:
Was gefällt dir denn am IntelliSense-System in C++ nicht? Klar, die Ausfälle ab und zu sind halt lästig, aber für mich ist IntelliSense wirklich eine sehr grosse Hilfe...
Bei mir fällt es andauert aus..
Also ich kann mich nicht erinnern dass es bei jemals bei C++ funktioniert hat,
unter C# ist das IntelliSense echt super.
Aber unter C++ kannste es total vergessen.
Und jetzt bekomme ich bei meiner Klasse auch nur noch die Meldung "IntelliSense: 'Keine weiteren Informationen verfügbar.'". Egal ob ich innerhalb der Klasse Arbeite oder außerhalb.
-
Nexus schrieb:
Sollte eigentlich nicht passieren, bzw. es liegt nicht am Template. Manchmal hat die IntelliSense-Datenbank ein Problem, da hilft entweder Neu-Erstellen der Projektmappe oder Löschen der Datenbankdatei (*.ncb).
Nicht zwagsweise, es gibt durchaus Konstrukte ohne Templates wo Intellisense aufgibt. Zum Beispiel scheint es nur den Header zu analysieren, beim Handle-Body Idiom (PIMPL) steigt es aber bereits in den einfachsten Fällen aus. Und es gibt noch weit mehr Situationen wenn man sich mit den etwas spezielleren C++ Konstrukten beschäftigt...
Wobei ich sagen muss nachdem ich inzwischen nun wieder mit den C++ Builder arbeite, sehne ich mit sogar das ganz klassische Intellisense und einfachste Refactoringwerkzeuge zurück. Das CodeInsign gibt bei mir relativ schnell den Geist auf (oder ist extremst langsam).
cu André
-
Aber ich frage mich, warum ist der C# Compier so gut Entwickelt und der C++ Compiler nicht?
Hat Microsoft keine Lust mehr den C++ Compiler zu entwickeln/erweitern?
-
lord_fritte schrieb:
Aber ich frage mich, warum ist der C# Compier so gut Entwickelt und der C++ Compiler nicht?
Hat Microsoft keine Lust mehr den C++ Compiler zu entwickeln/erweitern?Das hat nichts mit dem Compiler zu tun.
-
lord_fritte schrieb:
Aber ich frage mich, warum ist der C# Compier so gut Entwickelt und der C++ Compiler nicht?
Hat Microsoft keine Lust mehr den C++ Compiler zu entwickeln/erweitern?Der Visual C++ - Compiler ist extrem gut entwickelt ;-).
Das Problem liegt eig. allein bei IntelliSense und C++ Code auszuwerten ist in vielen Fällen ungleich schwerer als C# Code.
Ich würde sagen, du solltest mal anfangen dich mit IDEs, Compilern etc. auseinandersetzen und dann kannst anfangen anfangen solche Behauptungen aufzustellen.
-
LordJaxom schrieb:
HumeSikkins schrieb:
wird dir nichts anderes übrigbleiben als die Definitionen in den Header zu schreiben.
? :p
Aber wie sollen die Definitionen so einer Klasse aussehen? ich habe alles mögliche versucht, es gibt nur errors.
-
lord_fritte schrieb:
LordJaxom schrieb:
HumeSikkins schrieb:
wird dir nichts anderes übrigbleiben als die Definitionen in den Header zu schreiben.
? :p
Aber wie sollen die Definitionen so einer Klasse aussehen? ich habe alles mögliche versucht, es gibt nur errors.
Soll das'n Witz sein? Wurde doch bereits beantwortet und Du sagtest, dass es ginge.
-
Konrad Rudolph schrieb:
lord_fritte schrieb:
LordJaxom schrieb:
HumeSikkins schrieb:
wird dir nichts anderes übrigbleiben als die Definitionen in den Header zu schreiben.
? :p
Aber wie sollen die Definitionen so einer Klasse aussehen? ich habe alles mögliche versucht, es gibt nur errors.
Soll das'n Witz sein? Wurde doch bereits beantwortet und Du sagtest, dass es ginge.
Ja aber ich habe nicht wirklich eine Header-Definition, sondern ich habe die Klasse komplett in die Header-Datei gepackt, das ist doch eigentlich nicht sehr elegant, wie sähe denn eine Klasse Definition mit Template aus wenn ich Klasse in cpp und Definition in eine Header Datei packen möchte?
-
lord_fritte schrieb:
Konrad Rudolph schrieb:
Wurde doch bereits beantwortet und Du sagtest, dass es ginge.
Ja aber ich habe nicht wirklich eine Header-Definition, sondern ich habe die Klasse komplett in die Header-Datei gepackt, das ist doch eigentlich nicht sehr elegant, wie sähe denn eine Klasse Definition mit Template aus wenn ich Klasse in cpp und Definition in eine Header Datei packen möchte?
Darum ging es doch gerade. Sobald Du Templates verwendest, geht diese Trennung nicht: es muss die gesamte Definition in der Headerdatei stehen.
-
Und bevor du nach dem Grund fragst: Hier wurde das Thema diskutiert

-
wollte mal anmerken es ist durchaus möglich die implementierung von template klassen/methoden in ne ".cpp datei" zu schreiben diese .cpp wird dann in der .h datei "included" und nicht extra wie die anderen dateien kompiliert. keine ahnung wo ich das mal gelesen habe aber es geht...
.h datei
deklarationen wie gewohnt
und am ende unten:#ifndef USE_EXPORT_KEYWORD #include "deinecppdatei.cpp" #endif.cpp datei
included NICHT die .h datei
enthält "nur" die implementierung#ifndef USE_EXPORT_KEYWORD #define export /*nothing*/ #endif //... //... export template<typename T> void meineklasse::beispiel(T t) { //... }wie gesagt es ist nicht schön aber bei großen .h dateien kann es durchaus übersichtlicher sein das ganze mit "includes und defines" zu lösen

schönen abend noch
-
Man kann die Definitionen der template-Funktionen auch in
der cpp-Datei stehen lassen (ohne sie im Header einzubinden).Wenn du meineklasse<int> benötigst, dann muss in die cpp-Datei
template meineklasse<int>;und analog für jeden anderen Typ, den du benutzt.
Quelle:
http://www.ddj.com/cpp/184403420Alex