Zum Inhalt springen

Object in eigenen Typ umwandeln c++


<<valle>>

Empfohlene Beiträge

Hallo allerseits,

ich hab mal ne Frage und zwar:

Habe ich einen Thread dem ich einen Parameter übergebe:

Datei:Klassen.h


using namespace System;

using namespace System::Collections::Generic;

using namespace System::Threading;

#pragma once


public ref class client

{

public:

	Int32 id;

	Int32 loc_x;

	Int32 loc_y;

	bool used;

	List<String^>^ commands;


	client(Int32 index);



};

public ref class request

{

public:

	Int32 dest_x;

	Int32 dest_y;

	Int32 start_x;

	Int32 start_y;

	Int32 client_index;



	request(Int32 s_x, Int32 s_y, Int32 d_x, Int32 d_y);



};


public ref class server

{

public:

Int32 clientamount;

bool btmr;

List<client^>^clients;


List<request^>^requests;



ThreadStart^ThreadDelegateTmr; 

ParameterizedThreadStart^ThreadDelegateThr;//  <------------Um diesen Thread geht es

List<Thread^>^Thr;

Thread^Tmr;


server();

void start();

void stop();

void get_best_client(request^r);

void manage_requests();

void handle_request(Object^o);

void calculate_route(request^r);

};






#pragma endregion

Hier noch die passende server.cpp

using namespace System;

using namespace System::Collections::Generic;

#include "stdafx.h"

#include "Klassen.h"


server::server()

{


	clientamount=2;

	requests=gcnew List<request^>(0);

	clients=gcnew List<client^>(clientamount);

	for(int loop=0;loop<2;++loop)

	{

		clients->Add(gcnew client(loop));

	}


	btmr=false;

	ThreadDelegateTmr=gcnew ThreadStart(this, &server::manage_requests);

	ThreadDelegateThr=gcnew ParameterizedThreadStart(this, &server::handle_request);//<---Hier ist mein Thread

	Thr=gcnew List<Thread^>(0);

}

void server::start()

{

	// Thread manage_requests starten

	btmr=true;

	Tmr=gcnew Thread(ThreadDelegateTmr);

	Tmr->Start();

}

void server::stop()

{

	// Thread manage_requests stoppen

	btmr=false;

	Tmr->Join();

}

void server::calculate_route(request^r)

{

}

void server::get_best_client(request^r)

{

	int id=0;

	r->client_index=id;

}

//**********************************


void server::handle_request(Object^o)

{



	request^r=o;//<------------------------------Hier ist das Problem


	//Nächsten Client finden

	//server::get_best_client(o);

	//Route berechnen

	//server::calculate_route(o);



}

void server::manage_requests()

{

	bool free =false;

	while(btmr)

	{

		//Mindestens ein Request

		if(requests->Count>0)

		{		

			//Ist ein Client frei ?

			for(Int32 loop=0;loop<clientamount;++loop)

			{

				if(!clients[loop]->used)

				{

					free=true;

					loop=clientamount;

				}

			}



			//Es ist einer frei

			if(free)

			{

				Thr->Add(gcnew Thread(ThreadDelegateThr));

				Thr[Thr->Count-1]->Start(requests[0]);//<----Hier übergebe ich ihm den Parameter vom Typ request

				//server::handle_request(requests[0]);


			}


		}





	Thread::Sleep(100);

	}

}


Dieser Parameter darf aber nur vom Typ Object sein.

Das Problem taucht in der server::handle_request(Object^o) auf.

Wie kann ich in dieser Funktion aus dem Object wieder ein request machen?

Ich hoffe ich habe alle relevanten Dinge gesagt.

Vielen Dank für die Antworten

Lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...