Если ваш пользовательский скрипт загружен до того, как плагин jQuery будет загружен в браузер, тогда может возникнуть такая проблема. Таким образом, всегда сохраняйте свой собственный код JavaScript или jQuery после вызова плагина jQuery, поэтому решение для этого:
Сначала добавьте ссылку на файл jQuery, размещенный в GoogleApis, или локальный файл jQuery, который вы будете загружать из http://jquery.com/download/ и хост на вашем сервере:
или любой плагин для jQuery. Затем добавьте ссылку на свой файл сценария или код:
Нет, нет. Вы не можете перегружать методы на основе типа возврата.
Разрешение перегрузки учитывает подпись функции. Функциональная подпись состоит из:
И вот цитата:
1.3.11 signature
информация о функции, которая участвует в разрешении перегрузки (13.3): ее список параметров-параметров (8.3.5 ) и, если функция является членом класса, cv-квалификаторы (если есть) для самой функции и класса, в котором объявлена функция-член. [...]
blockquote>Опции:
1) изменить имя метода:
class My { public: int getInt(int); char getChar(int); };
2) параметр out:
class My { public: void get(int, int&); void get(int, char&); }
3) шаблоны ... overkill в этом случае.
вы не можете перегрузить функцию, основанную на возвращаемом типе функции. вы можете преодолеть на основе типа и количества аргументов, которые выполняет эта функция.
Хотя большинство других комментариев по этой проблеме являются технически правильными, вы можете эффективно перегрузить возвращаемое значение, если вы объедините его с перегрузкой входного параметра. Например:
class My {
public:
int get(int);
char get(unsigned int);
};
DEMO:
#include <stdio.h>
class My {
public:
int get( int x) { return 'I'; };
char get(unsinged int x) { return 'C'; };
};
int main() {
int i;
My test;
printf( "%c\n", test.get( i) );
printf( "%c\n", test.get((unsigned int) i) );
}
В результате получается следующее:
I
C
Вы можете так думать:
У вас есть:
int get(int);
char get(int);
И не обязательно собирать возвращаемое значение функции во время вызова.
Теперь вы вызываете
get(10); -> there is an ambiguity here which function to invoke.
Итак, нет смысла, если перегрузка разрешена на основе типа возврата.
Вы не можете перегружать методы, основанные на типах возврата. Лучше всего создать две функции с немного отличающимся синтаксисом, например, во втором фрагменте кода.
Возможно, но я не уверен, что это метод, который я бы рекомендовал начинающим. Как и в других случаях, когда вы хотите, чтобы выбор функций зависел от того, как используется возвращаемое значение, вы используете прокси; сначала определите такие функции, как getChar
и getInt
, затем общий get()
, который возвращает прокси, например:
class Proxy
{
My const* myOwner;
public:
Proxy( My const* owner ) : myOwner( owner ) {}
operator int() const
{
return myOwner->getInt();
}
operator char() const
{
return myOwner->getChar();
}
};
Расширяет его до такого количества типов, которое вам нужно.
Нет, вы не можете перегружать по типу возврата; только по типам параметров, а также с константными / летучими квалификаторами.
. Один вариант - «вернуть» с помощью ссылочного аргумента:
void get(int, int&);
void get(int, char&);
, хотя я бы, вероятно, использовал шаблон, или иначе названные функции, как ваш второй пример.
Невозможно перегрузить тип возврата в C ++. Без использования шаблонов использование get_int
и get_char
будет лучшим, что вы можете сделать.