ic 5.0 verwenden

07/17/2015 16:55 .Quadral#1
Hallo liebe Devs,

einige kennen das hier bestimmt: [Only registered and activated users can see links. Click Here To Register...]

Ich wollte aus der ic.hpp eine Klasse Funktion einbinden

Code:
namespace ic;

int main(void)
{
        Console::setWindowSize(500, 500);
        ...
        return 0;
}
Das ganz sollte nur zum testen dienen jedoch kriege ich folgenden Fehlermeldung:
Code:
Ein statischer Memberverweis muss relativ zu einem bestimmten Objekt sein.
Ich habe auch direkt im vorrum nachgefragt, jedoch konnte mir keiner wirklich helfen. Deswegen wollte ich euch um Rat bitten.

Vielen Dank im vorraus

best regards
.DVNTY
07/17/2015 19:18 Logtetsch#2
Wie du in der ic.hpp sehen kannst, ist setWindowSize, sowie alle weiteren Methoden, nicht statisch. Demnach musst du zunächst ein Objekt dieser Klasse instanziieren.

Code:
Console myConsole = new Console();
myConsole.setWindowSize();
07/17/2015 20:04 snow#3
Wie du im Source Code siehst, gibt es eine Variable mit dem Namen con, die eine Referenz auf die Singleton-Instanz ist.

Sowohl con.setWindowSize(500, 500); als auch Console::getInstance().setWindowSize(500, 500); sollten somit funktionieren.

Quote:
Originally Posted by Logtetsch View Post
Code:
Console myConsole = new Console();
myConsole.setWindowSize();
Falsche Sprache.
07/17/2015 20:18 Logtetsch#4
Quote:
Originally Posted by snow View Post
Falsche Sprache.
Sollte mehr oder weniger als Pseudocode dienen

Code:
Console* myConsole = new Console();
myConsole->setWindowSize();
bitte.... :p

Quote:
Originally Posted by snow View Post
Unschön, da ist ein new. :bandit:
Code:
Console* myConsole = 0;
myConsole = (Console*)calloc(1, sizeof(Console));
(*myConsole).setWindowSize();
//lol
07/17/2015 20:23 snow#5
Quote:
Originally Posted by Logtetsch View Post
Code:
Console* myConsole = new Console();
myConsole->setWindowSize();
bitte.... :p
Unschön, da ist ein new. :bandit:
07/17/2015 20:32 .Quadral#6
und das myConsole kann ich selbstverständlich nennen wie ich will oder? und das kann ich dann für alle Funktionen verwenden, welche ich aus der ic.hpp aufrufen will?

Danke schonmal für eure Hilfe.
07/17/2015 20:38 Logtetsch#7
Quote:
Originally Posted by .DVNTY View Post
und das myConsole kann ich selbstverständlich nennen wie ich will oder?
Selbstverständlich.

Quote:
Originally Posted by .DVNTY View Post
und das kann ich dann für alle Funktionen verwenden, welche ich aus der ic.hpp aufrufen will?
Yes Sir.
07/17/2015 20:43 .Quadral#8
Code:
Console* NewConsole = new Console();
Bei
Code:
Console();
kriege ich die Meldung
Quote:
auf .... kann nicht zugegriffen werden

Edit: Also der Fehler kommt davon das Console kein public-Member ist. Wie kann ich trd darauf zugreifen?
07/17/2015 21:09 snow#9
Der Konstruktor von Console ist privat, zur Interaktion gibt es wie von mir geschrieben die "con" Variable oder die statische getInstance() Methode.

Wie bereits in der PN geschrieben, solltest du Zeiger und die Verwendung von new verwenden wenn du nicht weißt warum du es brauchst.
Die Funktion erwartet eine const reference auf eine std::wstring Instanz. Die kann implizit mit const wchar_t * erstellt werden. Mit dem MSVC können Unicode-Strings erstellt werden indem man dem String ein L voranstellt, in deinem Fall also L"Irgendwas".
07/17/2015 21:19 .Quadral#10
also wenn ich con verwende ich das unnötig?
Code:
Console* CONSOLE = new Console();
Edit: Okay nun hat alles geklappt so wie ich es will danke für eure Hilfe.
Also wenn ich ic nun als .dll einbinden will, füge ich die .hpp und .cpp meinem programm hinzu, Füge die .lib in den Projekteigenschaften hinzu und die .dll pack ich in den Debug ordner richtig?