2009-04-06 6 views
2

refactorisé de bug_report_view.cc et bug_report_view.h, je send_report() extrait, report_phishing(), quelques autres petites fonctions et BugReport::Cleanup dans bug_report.cc et bug_report.h (mes versions). Maintenant Compiler, je reçois:Comment ai-je rompu l'héritage?

[...]bug_report.cc:196: error: no matching function for call to ‘URLFetcher::URLFetcher(std::wstring&, URLFetcher::RequestType, BugReport::PostCleanup*)’ ../chrome/browser/net/url_fetcher.h:136:

note: candidates are: URLFetcher::URLFetcher(const URLFetcher&) ../chrome/browser/net/url_fetcher.h:82:

note: URLFetcher::URLFetcher(const GURL&, URLFetcher::RequestType, URLFetcher::Delegate*)

Pour une raison quelconque, BugReport::PostCleanup (dans ma version) n'est pas reconnu comme une sous-classe de URLFetcher :: Déléguer, mais BugReportView::PostCleanup (dans les premiers liens) est. Alors, où ai-je gâché? Merci.

+0

le premier lien est incorrect. – bayda

+0

Pouvez-vous rendre cette question un peu plus claire? :-) –

+0

Mon mauvais. Liens mis à jour et question élargie. –

Répondre

3

Le problème n'est pas le type de la classe PostCleanup. Le problème est le type du premier paramètre du constructeur de la classe URLFetcher. Le constructeur attend un GURL &, vous passez un std::wstring appelé post_url. Vous devrez effectuer une sorte de conversion entre les deux. Peut-être quelque chose comme cela serait approprié:

GURL post_url(l10n_util::GetString(IDS_BUGREPORT_POST_URL)); 
URLFetcher* fetcher = new URLFetcher(post_url, URLFetcher::POST, 
            new BugReport::PostCleanup); 

Dans le code que vous avez modifié, la classe a un membre de GURL qui est initialisée dans le constructeur, vous avez changé à une variable référencée seulement qu'une fonction, mais changé le type.

+0

Hah, ouah. Le dernier paramètre a attiré mon attention, et j'ai complètement raté ça. Merci de votre aide. –

0

A:

URLFetcher* fetcher = new URLFetcher(post_url, URLFetcher::POST, 
             new BugReport::PostCleanup); 

il ne peut pas trouver un constructeur URLFetcher thzat prend les paramètres youn donner - le problème est probablement dans url_fetcher.h, que vous ne l'avez pas montré.

BTW, il y a beaucoup d'autres problèmes et mauvaises pratiques exposés dans votre code - ce serait une bonne idée d'initier une révision complète du code dès que possible.

+0

Bien sûr, c'est là que le problème est, mais BugReport :: PostCleanup est une sous-classe de URLFetcher :: Delegate, alors pourquoi n'essaye-t-il pas URLFetcher :: URLFetcher (const GURL &, URLFetcher :: TypeDemande, URLFetcher :: Delegate *)? –

0

Première version utilisée variable membre post_url_ seconde juste variable locale post_url.
Veuillez décrire ce qu'est le type GURL - c'est typedef sur std :: wstring ou autre chose.

Questions connexes