Funkcja jako parametr innej funkcji

0

Witam serdecznie.

Borykam się w sumie z jednym, końcowym już problemem podczas pisania programu. Przejrzalem nie tylko polskie fora ale i anglojęzyczne, włącznie z ebookami itp., ale nadal pomimo wykorzystywania podręcznikowych przykładów nie wychodzi mi to.
Poniżej załącze kod:

void testing( void (*sortType)( vector<int> ) )
{
	string fileName;
	ostringstream id;

	for( int i=0; i<elements; i++ )
	{
		double tstart, tstop, ttime;
		vector<int> data;
		id << gTable[i];

		fileName = "random[" + id.str() + "].txt";
		readFile( fileName, data );

		tstart = (double)clock();
		( *sortType )( data );
		tstop = (double)clock();
		ttime = tstop - tstart;
		cout << "Random[" + id.str() + "]: " << ttime << endl;

		id.str("");
	}
	for( int i=0; i<elements; i++ )
	{
		double tstart, tstop, ttime;
		vector<int> data;
		id << gTable[i];

		fileName = "sorted[" + id.str() + "].txt";
		readFile( fileName, data );

		tstart = (double)clock();
		(*sortType)( data );
		tstop = (double)clock();
		ttime = tstop - tstart;
		cout << "Sorted[" + id.str() + "]: " << ttime << endl;

		id.str("");
	}
	for( int i=0; i<elements; i++ )
	{
		double tstart, tstop, ttime;
		vector<int> data;
		id << gTable[i];

		fileName = "inv_sorted[" + id.str() + "].txt";
		readFile( fileName, data );

		tstart = (double)clock();
		(*sortType)( data );
		tstop = (double)clock();
		ttime = tstop - tstart;
		cout << "Inv_Sorted[" + id.str() + "]: " << ttime << endl;

		id.str("");
	}
}
void bubble()
{
	system( "cls" );
	cout << "Testing in progress..." << endl << endl;
	vector<int> data;

	testing( bubbleTest( data ) );

	cout << "Press any key to quit...";
	_getch();
}
//END EXPLORE

//BEGIN SORT TYPE
void bubbleTest( vector<int> &tab )
{
	int i, temp;
	bool finished = false;
	 
	while (!finished)
	{
		finished = true;
		for( i = 0; i < tab.size()-1; i++ )
		{
			if( tab[i] > tab[i+1] )
			{ 
				temp = tab[i];
				tab[i] = tab[i+1];
				tab[i+1] = temp;
				finished=false;
			}
		}
	}
}

Chodzi mi o to by w funkcji bubble() podac funkcję sortowania, która ma być podstawiona w każdym stosownym miejscu w funkcji testing.

Nie jestem raczej dobry z programowania, dopiero się uczę, wiem, że jeszcze sporo przede mną, ale będę bardzo wdzięczny za pomoc w rozwikłaniu tego problemu.

0

void testing( void (*sortType)( vector<int> &) ) brakuje jednego znaku - &

0

Hmm... Zmienilem to lecz nadal nic.
Problem występuje tu: testing( bubbleTest( data ) );

Treść błędu: http://scr.hu/0tae/mb65w

0
testing( bubbleTest );
// lub
testing( &bubbleTest );

Przewidując kolejne pytania: przed tym wywołaniem musisz umieścić przynajmniej deklaracje funkcji:
void bubbleTest(vector<int> &)

0

Dziękuje bardzo :) Takie głupie błędy, a tyle czasu mi zabrały ^^

1 użytkowników online, w tym zalogowanych: 0, gości: 1