WinForms ist schon seit Ewigkeiten deprecated und sollte deshalb nicht mehr verwendet werden. Ebenfalls erschließt sich mir nicht der Sinn dahinter ein Spiel in einem GUI Toolkit zu schreiben, es sei denn natürlich du meinst sowas wie PictureBox framebuffer software rendering.

Ich würde dir zum schreiben eines Tetris klons raten.

...zur Antwort

Also wenn man ganz semantisch sein will kann eine Funktion maximal einen Wert zurückgeben, jedoch gibt es ein paar "tricks" wie man dies umgehen kann. Wenn man eine Funktion haben will welche mehr als einen integralen datentypen zurück gibt und das jedes mal so kann man einfach ein struct erstellen welches die benötigten daten beinhaltet und dies dann zurückgeben. Hat man jedoch eine funktion welche entweder einen oder einen anderen, jedoch nicht beide gleichzeitig zurückgibt, so empfiehlt es sich ein union zu verwenden, da ein union in solchen Fällen speichereffizienter ist als ein struct da ein union immer nur maximal so viel speicher belegt wie sein größter member. Hat man jedoch eine Funktion welche alterierende Datentypen hat so kann man, entweder, falls man die boost bibliothek verwendet ein boost::any zurückgeben, oder falls man kein boost verwendet einen void *

//Beispiel 1
struct koordinaten {
//struct ist in C++ der klasse ähnlich mit dem unterschied das alle member standardmäßig public sind
//C++ unterstützt keine C-Style structs
koordinaten(int x, int y) : _x(x), _y(y) {}
int _x;
int _y;
};
koordinaten x(int x, int y){
koordinaten temp(x, y);
return temp;
}
//Beispiel 2
union my_return_type {
koordinaten k;
int hoehe;
};
my_return_type x(int x, int y, int h){
my_return_type temp;
if(x == 0 && y == 0){
temp.hoehe = h;
}else {
temp.k._x = x;
temp.k._y = y;
}
return temp;
}
//Beispiel 3
void *x(int x){
int a = 10;
double b = 3.14;
std::string c = "";
switch(x){
case 1:
return (void *)&a;
break;
case 2:
return (void *)&b;
break;
case 3:
return (void *)&c;
break;
}
...zur Antwort
Wie kann ich die C++ Version auf meinem Raspberry PI aktualisieren?

Hallo Community, ich versuche seid einiger Zeit MC auf dem PI zu installieren. Ich gehe dabei nach dieser Anleitung vor:

http://www.tutorials-raspberrypi.de/webserver/raspberrypi-als-minecraft-server/

Ich komme bis zu Schritt "cmake ...". Dort spuckt er mir folgende Fehlermeldung aus:

pi@raspberrypi ~/mc-server-orig $ cmake . -DCMAKE_BUILD_TYPE=RELEASE && make -- JsonCpp Version: 1.6.4 -- SQLITECPP_RUN_CPPLINT OFF -- SQLITECPP_RUN_CPPCHECK OFF -- SQLITECPP_RUN_DOXYGEN OFF -- SQLITECPP_BUILD_EXAMPLES OFF -- SQLITECPP_BUILD_TESTS OFF -- GCC Version >= 2.95 enabling no-strict-aliasing including polarssl -- Configuring done -- Generating done -- Build files have been written to: /home/pi/mc-server-orig [ 0%] Building CXX object lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/json_reader.cpp.o cc1plus: error: unrecognized command line option ‘-std=c++11’ cc1plus: error: unrecognized command line option ‘-std=c++11’ cc1plus: error: unrecognized command line option ‘-std=c++11’ lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/build.make:54: recipe for target 'lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/json_reader.cpp.o' failed make[2]: *** [lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/json_reader.cpp.o] Error 1 CMakeFiles/Makefile2:108: recipe for target 'lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/all' failed make[1]: * [lib/jsoncpp/src/lib_json/CMakeFiles/jsoncpp_lib_static.dir/all] Error 2 Makefile:113: recipe for target 'all' failed make: * [all] Error 2

Ich habe ebenfalls g++ auf dem Raspberry aktualisiert, die Version ist aber die neuste.

Weiß jemand Rat? Vielen Dank im Voraus!

...zur Frage

Du hast zwei möglichkeiten: entweder du upgradest dein gesamtes raspbian system auf raspbian testing (einfach in /etc/apt/sources.list das wheezy durch testing ersetzen und danach sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade) oder du kompillierst dir gcc aus dem source code heraus

...zur Antwort

Du solltest möglichst kein char array verwenden sondern die klasse std::string für welche du den header "string" einbinden musst. Da du char array angegeben hast gehe ich mal davon aus das du deine txt datei mit fopen() geöffnet hast. Wenn du idiomatisches C++ schreiben willst solltest du den std::ifstream aus dem "fstream" header benutzen.

#include <string>
#include <fstream>
int main(int argc, char **argv){
std::string buffer = "";
std::ifstream file("meinedatei.txt", "r");
std::getline(file, buffer);
return 0;
}
...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.