C++ mit Xcode

Entscheidend bleibt aber das auch Objective-C Methoden intern einfach ganz normale Funktionen sind die zu einem blob im Speicher gehören

Könnte man nicht sagen, das -- wenn der Tag zu Ende geht -- alle Sprachen so arbeiten?

Alex
 
Ja da hast du natürlich absolut Recht :). Was ich genauer damit sagen wollte ist das es sowohl bei objc als auch c++ eine c Funktion ist.

Grüße
Nero
 
Ich häng mich hier mal rein, hat evtl. mal jemand eine Beispielapplikation die in qt aufm mac geschrieben ist.

Ich würd mir das ganze mal gerne ansehen - wenn es nicht all zu häßlich ist wäre das evtl. genau das Richtige für meine Zwecke.

Danke
 
Die TomTom Software

Alex
 
Ja da hast du natürlich absolut Recht :). Was ich genauer damit sagen wollte ist das es sowohl bei objc als auch c++ eine c Funktion ist.

Grüße
Nero

Richtig, das ist ja auch der übliche Weg, abgeschlossene logisch/programmatische Einheiten wiederverwertbar zu kapseln. Worauf ich hinaus wollte, ist der semantische Unterschied von Klassenmethoden bei C++ (C-Style, late binding) und Messages bei ObjC (Smaltalk-Style, dynamic binding). Man kann sie ganz anders verwenden. Beispiel: Itterier mal in C++ über eine Liste beliebiger Typen, nur einige davon enthalten die Methode foo(), noch weniger von ihnen unterstützen den Itterator-Typ bar (die Restlichen erhalten die Methode foo aus einem anderen Interface). Schon der Compiler wird dir ein Übersetzen verbieten. Da ist noch garkein Speicherbereich reserviert. Ein ObjC-Compiler erlaubt dir das Übersetzen, besser noch, er erlaubt dir die Ausführung ohne Fehlermeldung. Alle Objekte, welche die Message foo() unterstützen, werden an dieser Message aufgerufen, unabhängig von dem Interface, von dem die Methode kommt. Dieser Semantische Unterschied wird sogar durch die andere Syntax gekennzeichnet (Auch hier C++: C-Style, ObjC: Smaltalk-Style).

Bis auf die gemeinsame Eigenschaft der Kapselung von funktionalen Einheiten halte ich es für gewagt, die beiden Programmiersprachen als gleich hinzustellen.

(In Sachen ObjC Spreche ich nur aus dem Wissen, was ich aus den Dokumentationen von Apple erlese hab. Selbst hab ich noch nicht eine Zeile Code mit dieser Programmiersprache geschrieben. Wenn sich ein Fehler in meinem Verständnis eingeschlichen hat, bitte berichtigen)

Gruß Carsten
 
(In Sachen ObjC Spreche ich nur aus dem Wissen, was ich aus den Dokumentationen von Apple erlese hab. Selbst hab ich noch nicht eine Zeile Code mit dieser Programmiersprache geschrieben. Wenn sich ein Fehler in meinem Verständnis eingeschlichen hat, bitte berichtigen)

Man könnte Dinge ergänzen, aber Fehler sind keine drin.

Alex
 
Danke, Alex :)

Man könnte Dinge ergänzen

Dessen bin ich mir bewusst, aber ich will hier ja kein Tutorial für ObjC schreiben sondern nur ein Beispiel für die Unterschiede geben. ;)
 
Dessen bin ich mir bewusst, aber ich will hier ja kein Tutorial für ObjC schreiben sondern nur ein Beispiel für die Unterschiede geben. ;)
Klar. Ich wollte sagen, einem "Rosinenpicker" wäre Deine Darstellung vielleicht im Detail zu unscharf. Ich finde, für die Darstellung reicht es.

Insb. dass ein Object auf eine Nachricht reagieren kann, egal aus welchem Protocol, Interface oder Category sie kommt. Ausserdem können ObjC Objekte auch zur Laufzeit neue Methoden hinzufügen. Das erfordert in C++ doch deutlich mehr getrickse.

Alex
 
Hallo,
ich habe die Tage mit c++ angefangen, dazu benutze ich den xcode, habe als Project den "Cocoa Application" ausgewählt und als file C++. Dort habe folgenden code geschrieben:
#inlcude <iostream.h>
int main() {
cout << "Hello World!";
return 0;
}
beim compilieren und ausführen bekomme ich folgende Fehlermeldung /Users/testuser/test/helloworld.h:11: error: 'cout' was not declared in this scope
was mache ich falsch, ich habe schon alles Mögliche ausprobiert.
danke
 
Entweder du gibst an, dass du den Standard-Namespace verwenden willst, in dem cout enthalten ist ("using namespace std;") oder du schreibst std::cout << "Hello World!";
 
Hallo,
ich habe die Tage mit c++ angefangen, dazu benutze ich den xcode, habe als Project den "Cocoa Application" ausgewählt und als file C++. Dort habe folgenden code geschrieben:

beim compilieren und ausführen bekomme ich folgende Fehlermeldung /Users/testuser/test/helloworld.h:11: error: 'cout' was not declared in this scope
was mache ich falsch, ich habe schon alles Mögliche ausprobiert.
danke
Wenn du anfängst mit C++ wirst du wohl am Anfang bloß Programme für die Kommandozeile schreiben, also ohne GUI. Deswegen würde ich "C++ Tool" unter "Command Line Utility" benutzen.
"Cocoa Application" sind dazu gedacht um Programme mit dem Cocoa Framework zu schreiben. Nicht genau was du machen möchtest. :)
 
vielen dank :)
 
"Fifty years of programming language research, and we ended up with C++?"
 
Entweder du gibst an, dass du den Standard-Namespace verwenden willst, in dem cout enthalten ist ("using namespace std;") oder du schreibst std::cout << "Hello World!";
Oder er importiert einfach nur std::cout

Code:
using std::cout;
 
Hi Leute,

ich hänge mich mal an diesen älteren thread mit ähnlicher Fragestellung dran ;)
wir programmieren derzeit im Studium mit C++, Commando Line funktioniert unter xcode auch einwandfrei, jedoch soll jetzt die GUI hinzukommen. Laut Ordnung ist Visual Basic 6 vorgesehen ;(, will jedoch vermeiden, mir extra wegen der GUI Windows auf mein mac noch drauf zu machen. Gibt es daher, derzeit unter xcode 3.2, die Möglichkeit C++ mit GUI zu nutzen?

danke!
 
Grundsätzlich ja, natürlich. Du könntest zum Beispiel die QT von Trolltech anschauen. Die gibt es auch für Windows. Allerdings ist keine GUI-Lib wie die andere zu benutzen. Wenn dein Prof Visual Basic sagt, solltest du dem auch folgen um zu verstehen, was er möchte. Der Lehrinhalt wird höchst wahrscheinlich nur auf Visual Basic anwendbar sein
 
Laut Ordnung ist Visual Basic 6 vorgesehen ;(...

Man sollte deinem Prof. mal sagen, dass VB6 seit einigen Jahren doch schon nicht mehr wirklich lebendig ist und nur noch röchelt (streng genommen ist es TOD). Seitdem gab es schon WinForms (die auch schon veraltet sind) und nun WPF in Form von XAML. Und das alles für VB, C#, und C++ (.Net Sprachen), auch kostenlos als Express Edition in Version 2005, 2008 und 2010.

Schlimmstenfalls installiere es in einer vituellen Maschine. VirtualBox ist zum Beispiel kostenlos und eine Windows-Lizenz wirst Du sicher auftreiben können, evtl. ja über MSDNAA an deiner Hochschule.
 
danke für eure Antworten!
Werde mir dann wohl jetzt virtual box drauf machen - bald kommt dann eh java und windows ist wieder runter ;)
 
Zurück
Oben Unten