C++ Eigene Funktion, aber wie?

KingLM97

Lieutenant
🎅Rätsel-Elite ’18
Registriert
Mai 2012
Beiträge
927
Hallo,

ich versuche gerade eine Eigene Funktion in C++ zu erstellen, ich habe auch schon nach Lösungen gegoogelt, doch dort kam nicht das raus, was ich wollte.

Ich stelle mir das so vor:
Code:
#include "stdafx.h"
#include "stdio.h"
#include <iostream>

int Infos(int Schaden, int Durchschlagskraft, int Leben){  //Funktion
	
}

int _tmain(int argc, _TCHAR* argv[])
{
                 Infos(100, 110, 500);
                 cout << Infos << endl;
	return 0;
}

Also, dass ich bei Infos(100, 110, 500) erst den Schaden, dann die Durschlagskraft und dann das Leben eingegeben wird. Das ganze möchte ich dann noch ausgeben lassen.
Das ganze soll unter WinXP und Visual Studio 2008, .NetFramework 3.5 funktionieren.

Lg
LUkas
 
Deine Funktion wäre schon richtig, aber du willst in der Funktion Infos vermutlich ja was berechnen und dann ausgeben, d.h. die Funktion muss was zurück geben.

Das wird mit der return Anweisung am Ende der Funktion dann gemacht.

Code:
#include "stdafx.h"
#include "stdio.h"
#include <iostream>
 
int Infos(int Schaden, int Durchschlagskraft, int Leben){  //Funktion
	// berechne i-was
        return ergebnis;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
                 int ergebnis = Infos(100, 110, 500);
                 cout << ergebnis << endl;
                 // ALternativ wäre auch
                 // cout << Infos(100, 110, 500) << endl;
                 // moeglich. Aber eine Funktion als Variable zu missbrauchen geht nicht ; )
	return 0;
}

So ca. wird das ablaufen.


Tipp: Klein und Großschreibung nochmal in C++ Schauen. Da gibt es auch eine Style-Richtlinien etc.
 
Dann solltest du nochmal ein wenig zu Funktionen lesen.
C++ brauchst du dafür dann auch nicht, da reicht C. Eine leidige sinnlose Diskussion aber ;-)

In deinem Code kann das so aber nicht funktionieren, da du keinen korrekten Funktionsaufruf im cout machst.

cout << Infos(100, 110, 500) << endl;
 
Nein, in der Funktion möchte ich nix berechnen, aber danke, dass bräuchte ich später!
Ich möchte nur, dass ich bei Infos(x, y, z) erst den Schaden, dann die Durschlagskraft und dann das Leben eingeben kann, so dass ich die Infos dann per "cout" ausgeben kann. Hoffe das ist etwas verstädnlicher.
 
Die Methode "Infos" gibt dir nur EINEN Int Wert zurück. Mach es dir doch einfach und verwende je 3 Get und 3 Set Methoden zum Setzen und Erhalten der jeweiligen Information. Die Werte sind jeweils in globalen Variablen gespeichert.

Rückgabewert mittels return

edit:

Code:
void SetDamage(int damage)
{
   m_damage = int damage;
}

int GetDamage()
{
   return m_damage;
}


In der Main kannst du per SetDamage die globale Variable m_damage auf damage setzen und dann per GetDamage wieder abfragen
 
Zuletzt bearbeitet:
Ich glaub ich weiß, was du willst. Das macht man aber nicht mit Funktionen, sondern mit nen struct

Code:
#include "stdafx.h"
#include "stdio.h"
#include <iostream>
 
struct info{
        int Schaden;
        int Durchschlagskraft;        
        int leben;
};

int _tmain(int argc, _TCHAR* argv[])
{
                 info info1 ={100,110,500};
                 cout << info1.Schaden << endl;
                 // etc.
	return 0;
}
 
Zuletzt bearbeitet: (Für die Nachwelt korrigiert. Meine Verwirrtheit! :D)
wenn du nix berechnen willst, nehm als funktions-typ einfach void anstatt int, dann brauchste auch kein return 0 am ende..

außerdem ggf. char anstelle von int für die variablen, wenn du eben nix berechnen willst...

mit char kannste das dann auch schön formatiert ausgeben mit cout...
 
@DasBoeseLebt

Genau das habe ich versucht/gesucht.
Aber wenn ich das Eintippe und starte, kommt folgender/folgende Fehler:
c:\dokumente und einstellungen\administrator.ip-015-104\eigene dateien\visual studio 2008\projects\Helper\Helper\Helper.cpp(18) : error C2078: too many initializers
UND
c:\dokumente und einstellungen\administrator.ip-015-104\eigene dateien\visual studio 2008\projects\Helper\Helper\Helper.cpp(18) : error C2440: 'initializing' : cannot convert from 'int' to 'info'
 
Ja, kann ja auch nicht funktionieren, da bin ich wohl gerade leicht durcheinander gekommen. ( :D ups)

info info1 = {100,110,500};, so wäre die Zeile richtig.

Alternativ geht es auch so.

info info1;
info1.leben = 10;
etc.
 
@DasBoeseLebt

Vielen herzlichen dank für die viele Hilfe. Es klappt nun perfekto!

LG
Lukas

P.S.: DANKE!
P.P.S.: Jetzt stehen mir noch ca. 1,5-2k Zeilen Code bevor....
P.P.P.S.: Gibt nicht irgendein Programm, wo man eingibt was man will, beispielsweiße 2+5=7, dass er darauß gleich den Kompletten Code zusammenbastelt? :D Denke mal nicht D:
 
Diesen Spaß werde ich haben, wovon ich jetzt gerade mal 100 Zeilen habe, das in fast 2 Stunden! Hochgrechnet, wenn ich in diesem Tempo weiter schreibe, bräuchte ich komplett 40 Stunden. (Meine Tausenden-Errors lasse ich mal links liegen, weil die Suche kann auch etwas (denke mal 3-4 stunden) dauern....
 
Wenn du dir tatsächlich ein kleines Spiel basteln willst (auch wenn es nur 1,5-2k Zeilen lang sein soll), dann würde ich dir dennoch empfehlen dir mal Klassen anzuschauen. Die sind vor allem bei komplexeren Programmen doch zu empfehlen.
 
Zurück
Oben