Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Object in eigenen Typ umwandeln c++

Empfohlene Antworten

Veröffentlicht

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

Danke!

Jetzt läufts.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.