LINUX.ORG.RU

Нелогичное API


0

2

Сколько видел всех документаций по библам, апи итп Все были трудны для понимания, я и сейчас не понимаю как их «читать\понимать» извините за тавтологию, вот например http://docs.wxwidgets.org/2.9.3/classwx_standard_paths.html#aca76479d42511c0b...

virtual wxString wxStandardPaths::GetExecutablePath () const [virtual]

Я долго ломал голову как использовать этот метод, и так пробовал написать, и так, в итоге пошел в гугл, нагуглил уже кем по написаный код, оказалось что использовать, вернее писать его нужно так:

wxStandardPaths().GetExecutablePath();
Совсем не так как написано в документации. Я чнего то не понимаю? Как понимать такие доки?

Перемещено post-factum из general



Последнее исправление: dpkg-i (всего исправлений: 2)

Разделы форума тебе тоже кажутся нелогичными?

power
()

API не должно быть логичным, что доказывает повсеместное успешное применение функции fork()

vertexua ★★★★★
()
Ответ на: комментарий от schizoid

а вообще много ли людей знает c++ и умеет на нём писа́ть? и это явно не ОП.

anonymous
()

Мальчик, сколько тебе лет?

geekless ★★
()

Совсем не так как написано в документации.

4.2. Объявление в документации соответствует вызову в коде.

Я чнего то не понимаю?

Да. Основные принципы написания программ и синтаксис C++.

Как понимать такие доки?

Для начала надо научиться понимать язык, на котором пишешь.

gentoo_root ★★★★★
()

Совсем не так как написано в документации. Я чнего то не понимаю?

Дай угадаю, ты пытался вызвать его как wxStandardPaths::GetExecutablePath()?

anonymous
()

все там понятно написано, как говорят выше - учи язык

s0L
()

читаем слева-направо:

virtual - означает что метод виртуальный.
wxString - тип результата, возвращаемого методом.
wxStandardPaths:: - метод принадлежит этому классу
GetExecutablePath - имя метода
() - метод не принимает параметров
const - метод объявлен как константный
[virtual] - пометка о том что метод виртуальный на уровне
документации, это уже не C++ синтаксис, ИМХО

«Example return values:» - Примеры того, что может возвратить метод
Смотрим примеры, видим что для каждой оси путь возвращается в своём родном формате.

У метода не видно слова static, значит это обычный, не статический метод. И следовательно для его использования мы должны иметь экземпляр класса wxStandardPaths. Интуиция подсказывает что не стоит создавать экземпляр как обычно, ибо для таких сервисных классов экземпляр как правило уже создан, но прячется где-то внутри библиотеки. Та же интуиция советует посмотреть, а нет ли у нашего многострадального класса каких-либо статических методов, предназначенных для доступа к уже готовому экземпляру. И, о диво, такой метод есть:

static wxStandardPaths& wxStandardPaths::Get ( ) [static]

И используется он для того, чтобы получить ссылку на уже имеющийся глобальный экземпляр класса.

Returns reference to the unique global standard paths object.



То есть, для того, чтобы использовать эту функцию, нужно написать:

wxStandardPaths::Get().GetExecutablePath()



P.S. Справочник != Учебник

dmitryalexeeff
()

Э, чувак, а что тут нелогичного? Кроме имени класса с мелкой буквы?

wolfy
()
Ответ на: комментарий от dmitryalexeeff

И используется он для того, чтобы получить ссылку на уже имеющийся глобальный экземпляр класса.

А чего эти дятлы конструктор не спрятали?

wolfy
()
Ответ на: комментарий от dmitryalexeeff

P.S. Справочник != Учебник

Самое смешное, что в самом начале документации на класс написано, что «Note that you must not create objects of class wxStandardPaths directly, but use the global standard paths object returned by wxStandardPaths::Get() »

Amp ★★★
()
Ответ на: комментарий от Amp

Самое смешное, что в самом начале документации на класс написано...

Документацию не читай @ Сразу быдлокодь

static_lab ★★★★★
()
Ответ на: комментарий от Amp

Самое смешное, что в самом начале документации на класс написано, что «Note that you must not create objects of class wxStandardPaths directly, but use the global standard paths object returned by wxStandardPaths::Get() »

мне стыдно, честно...

dmitryalexeeff
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.