Oto mój przykładowy kod:Inaccessible konwersji w QObject
class hoho : public QObject
{
Q_OBJECT
public:
hoho()
{
httpFetch = new HttpFetch(QUrl("http://www.google.com/"));
connect(httpFetch, SIGNAL(Fetched()), this, SLOT(PrintData(QByteArray)));
}
void PrintData(QByteArray http)
{
qDebug()<<http;
}
HttpFetch *httpFetch;
};
Kiedy próbuję skompilować ten, po błędzie wyskakuje
1>main.cpp(15): error C2243: 'type cast' : conversion from 'HttpFetch *' to 'const QObject *' exists, but is inaccessible
Ten błąd jest jako klasa pochodzi od QObject
(co jest niezbędny dla mechanizmu sygnału i szczeliny).
Czy ktoś może mi powiedzieć, jak to naprawić?
Twój konstruktor nie jest poprawny, przynajmniej dlatego, że podłączyłeś lokalny obiekt 'httpFetch' (który zostanie zniszczony na końcu zakresu ctor) do' this'. Nie jestem pewien, ale może to być źródło tego komunikatu o błędzie. Jeśli nie, cóż, nadal będziesz mieć problem i nie będziesz mieć połączenia, gdy tylko wykonanie zakończy zakres kontrolny. Wygląda na to, że powinieneś raczej zainicjować zmienną składową ... W tej chwili lokalny 'httpFetch' ukrywa zmienną składową' httpFetch'. – JBL
Próbowałem, jak powiedziałeś. Ale błąd pozostaje taki sam. – Bhai
Cóż, obecnie kod ctor jest nieprawidłowy. Najlepszy przypadek, nie będzie związku po zakończeniu ctor, w najgorszym przypadku masz UB, ponieważ wskaźnik, który trzyma połączenie dla sygnału jest śmieci. – JBL