tajemnicze bledy....

Michal Kochanowicz mkochano w ee.pw.edu.pl
Śro, 21 Cze 2000, 18:31:36 CEST


On Wed, Jun 21, 2000 at 01:57:20PM +0200, Wojciech Sas Cieciwa wrote:
> giltprotocol.cc:136: ANSI C++ forbids implicit conversion from `void *' in assignment
> O co w tym chodzi ??
> 
> Bo w C++ jestem zielony jak mlody chlorofil.
To powinno być dość proste do poprawienia, spróbuję to wyjaśnić na
przykładzie (z góry przepraszam jeśli coś pokręciłem):

int main(void) {
	char *c;
	void *v;
	
	// Zwróć uwagę że tu wszystko jest OK, aczkolwiek to przypisanie
	// powoduje utratę informacji o typie. new zwróci "wskaźnik na
	// char", ale przypisujesz go do "wskaźnik na cokolwiek".
	v = new char;

	// Niezgodność z ANSI C++: przypisanie niezgodnych typów: kompilator
	// nie wie, czy obiekt wskazywany przez zmienną typu "wskaźnik na
	// cokolwiek" jest w rzeczywistości typu "char" a nie "cokolwiek".
	c = v;
	// Dobrze: jawne rzutowanie typu. W ten sposób mówisz kompilatorowi,
	// że wiesz co robisz ;)
	c = (char *)v;

	return 0;
}

Czyli, żeby kompilator przełknął ten plik, będziesz musiał albo znaleźć
opcję, która spowoduje że nie będzie mu to przeszkadzać (pobieżne
przejrzenie manuala g++ nie ujawniło takowej ;) ) lub dopisać rzutowanie
typu tam gdzie kompilator tego zarząda.
-- 
--==Michał Kochanowicz==--==--==BOFH==--==--==mkochano w ee.pw.edu.pl==--
--==PGP key: www.ee(...)/~mkochano/PGP/ or finger me @ miriam.ee...==--
--==                 Prosecutors will be violated                  ==--



Więcej informacji o liście dyskusyjnej pld-devel-pl