Prikaz jedne poruke
Stara 15.1.2013, 16:49   #144
Lucic Nemanja
Starosedelac
 
Član od: 2.12.2005.
Lokacija: Beograd
Poruke: 1.241
Zahvalnice: 65
Zahvaljeno 76 puta na 49 poruka
Slanje poruke preko Skypea korisniku Lucic Nemanja
Određen forumom Re: How to... C++

Kod:
#include <iostream>
using std::cout;

class O {};
class I : O {};

void m(int& x)
{
    x=0;

    try 
    {
	x=1; 
	throw new O; 
	x=2;
    } 
    catch(I* i) 
    {
	x=3;
    }

    if (x!=3) x=4;
}

int main ()
{
    int x;
    m(x);
    cout << x;
    system("pause");
    return 0;
}
Prijavljuje gresku kod linije "throw new O". Kada promenim catch da hvata O*, ili throw da baca I* radi normalno. Da li je ikako moguce zaobici ovaj problem i koristiti pokazivac na izvedenu klasu da hvatam pokazivac na baznu? Takodje ekspilictnim konvertovanjem pokazivaca kod throw operatora u tip I* program radi normalno.
Prvenstveno me buni jer je ovakvo pitanje doslo na ispitu iz C++ (bez main funkcije, nju sam ja napisao cisto da bi testirao u kompajleru, a zadatak je da se odredi vrednost promenljive x nakon zavrsetka funkcije m). Kontam da je greska, pa reko da l' da im prijavljujem to?
Lucic Nemanja je offline   Odgovor sa citatom ove poruke