Size: a a a

cxx.Дискуссионная

2020 March 26

O

Ofee in cxx.Дискуссионная
зима
Доброй ночи!
Как такая гадость лечится.., существует функция, но оно почему-то показывается..
main.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "public: bool __cdecl Polinom::printPolinom(class Polinom *,class QString)" (?printPolinom@Polinom@@QEAA_NPEAV1@VQString@@@Z) в функции main
Функция printPolinom — твоя?
источник

з

зима in cxx.Дискуссионная
Ofee
Функция printPolinom — твоя?
угу
источник

O

Ofee in cxx.Дискуссионная
зима
угу
Она в разделяемой библиотеке?
источник

з

зима in cxx.Дискуссионная
Ofee
Она в разделяемой библиотеке?
да
источник

O

Ofee in cxx.Дискуссионная
Класс экспортируется наружу?
источник

з

зима in cxx.Дискуссионная
Ofee
Класс экспортируется наружу?
наверное)(
источник

O

Ofee in cxx.Дискуссионная
зима
наверное)(
Точно? Начать читать отсюда, закончить где-нибудь завтра
источник

з

зима in cxx.Дискуссионная
Ofee
Точно? Начать читать отсюда, закончить где-нибудь завтра
а, собсна, видимо вас обманул, и пока еще не библиотека, просто бичевский класс
источник

O

Ofee in cxx.Дискуссионная
зима
а, собсна, видимо вас обманул, и пока еще не библиотека, просто бичевский класс
Тогда просто стоит написать тело этой функции ;)
источник

з

зима in cxx.Дискуссионная
Ofee
Тогда просто стоит написать тело этой функции ;)
так оно есть.., все написано
источник

FF

Flex Ferrum in cxx.Дискуссионная
Расширенный вариант "моего", только проверяется несколько сигнатур. И вполне ожидаемо затыкается вот на таком варианте класса:
struct Hello
{
//    int helloworld(double, double, int, int, int) { return 0; }
//    int helloworld(double, double) { return 0; }
   int helloworld(double) { return 0; }
   int helloworld(std::string) { return 0; }
};
источник

FF

Flex Ferrum in cxx.Дискуссионная
Ofee
А мне нужно автоматически в трейте определить все методы под определённым именем и вывести на основе этого некоторые умозаключения. Мы решили совершенно разную задачу
Проблема в том, что корректно (и без приключений) перебрать все варианты перегрузки метода можно только с использованием static reflection. А рефлексию пока не завезли. Увы...
источник

O

Ofee in cxx.Дискуссионная
Flex Ferrum
Расширенный вариант "моего", только проверяется несколько сигнатур. И вполне ожидаемо затыкается вот на таком варианте класса:
struct Hello
{
//    int helloworld(double, double, int, int, int) { return 0; }
//    int helloworld(double, double) { return 0; }
   int helloworld(double) { return 0; }
   int helloworld(std::string) { return 0; }
};
Да, тут замечание справедливое, а слона-то я... Но, кстати, всегда можно воспользоваться несколькими способами!
Вариант от @BigRedEye, естественно, он тоже не идеален, но...
источник

FF

Flex Ferrum in cxx.Дискуссионная
Ну да. Не идеален. Сильно зависит от свойств класса T... Но интересен. "Доказательство от противного". Но заметь, он тоже не перебирает все варианты перегрузки. Лишь убеждается, что метод из базового класса - единственный доступный.
источник

O

Ofee in cxx.Дискуссионная
Flex Ferrum
Ну да. Не идеален. Сильно зависит от свойств класса T... Но интересен. "Доказательство от противного". Но заметь, он тоже не перебирает все варианты перегрузки. Лишь убеждается, что метод из базового класса - единственный доступный.
Да. Вообще, моя задача была просто в том, чтобы в static_assert вывести внятную ошибку, заменив "у тебя нет нужного метода/у тебя слишком много перегрузок нужного метода" на раздельное уведомление о том, и о другом... Оверинжиниринг такой оверинжиниринг, когда делать нечего...
источник

RM

Roy Mustang in cxx.Дискуссионная
Разве раньше можно было лямбду функцию принимать не через std::function?
источник

RM

Roy Mustang in cxx.Дискуссионная
template <typename T>
using fallback = void (*)(const T*);
источник

RM

Roy Mustang in cxx.Дискуссионная
На это не ругается, а раньше вроде как ругалось
источник

RM

Roy Mustang in cxx.Дискуссионная
или мне показалось?
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Roy Mustang
Разве раньше можно было лямбду функцию принимать не через std::function?
Да, можно
источник