Как я сломал наследство? - PullRequest
2 голосов
/ 07 апреля 2009

Рефакторинг из bug_report_view.cc и bug_report_view.h , я извлек send_report(), report_phishing(), несколько других более мелких функций и BugReport::Cleanup в bug_report. cc и bug_report.h (мои версии). Компилируя сейчас, я получаю:

[...]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*)

По какой-то причине BugReport::PostCleanup (в моей версии) не распознается как подкласс URLFetcher :: Delegate, но BugReportView::PostCleanup (в первых ссылках) есть. Так где я все испортил? Спасибо.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2009

Проблема не в типе класса PostCleanup. Проблема заключается в типе первого параметра конструктора класса URLFetcher. Конструктор ожидает GURL &, вы передаете std::wstring с именем post_url. Вам нужно будет выполнить какое-то преобразование между ними. Возможно, что-то вроде этого будет уместно:

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

В коде, который вы изменили, у класса есть член GURL, который инициализирован в конструкторе, вы изменили его на переменную, на которую ссылается только эта функция, но изменили тип.

0 голосов
/ 07 апреля 2009

Первая версия использовала переменную-член post_url_, вторая - просто локальную переменную post_url. Пожалуйста, опишите, что такое тип GURL - это typedef для std :: wstring или что-то другое.

0 голосов
/ 07 апреля 2009

В:

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

он не может найти конструктор URLFetcher, который принимает параметры, которые вы ему даете - проблема, вероятно, в url_fetcher.h, который вы не показывали.

Кстати, в вашем коде есть много других проблем и плохих практик - было бы неплохо спровоцировать полный пересмотр кода как можно скорее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...