Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
O_Q
-11 / 2 / 0
Регистрация: 10.04.2016
Сообщений: 53
#1

Как определить наличие конструктора с заданными параметрами? - C++

21.06.2016, 09:48. Просмотров 204. Ответов 2
Метки нет (Все метки)

Есть шаблонный класс - обёртка вложенного объекта. Его задача: принимать объект формата JSON и передавать его в конструктор нашего объекта, если таковой имеется, иначе ничего не делать - наличие такого конструктора нужно определить на этапе компиляции. Также хочу сразу спросить, можно ли определять существование метода класса с заданным именем и нужными параметрами.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2016, 09:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как определить наличие конструктора с заданными параметрами? (C++):

Определить, попадает ли точка в закрашенные области с заданными параметрами. - C++
Привет всем. Ребят, очень нужна ваша помощь, немогу разобраться. Мой вариант 14. застрял на первом задание, нужно сделать все 3, но если...

Определить, попадает ли точка с координатами в закрашенные области с заданными параметрами - C++
Определить, попадает ли точка с координатами {x,y}в закрашенные области с заданными параметрами. Сторона большого квадрата ...

Ошибка при вызове конструктора с параметрами - C++
подскажите, почему при вызове конструктора с параметрами выдает ошибку сегментации #include<math.h> #include<stdio.h> ...

error C2512: no appropriate default constructor available, несмотря на наличие конструктора по умолчанию - C++
Вот код: class University { string name; Human *chief; public: vector<Faculty> subList;

Программа стала работать некорректно при добавлении конструктора с параметрами - C++
Есть задача заюзать конструктор с параметрами (см. в самом начале кода) (до его введения все работало, и сейчас в общем-то работает, но в...

Вызов конструктора с несколькими параметрами при использовании push_back() в vector'е - C++
Ситуация: #include <vector> class bar { public: bar(); bar(int); bar(int, int); //<...> };

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7154 / 4295 / 969
Регистрация: 30.01.2014
Сообщений: 7,099
21.06.2016, 10:12 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
O_Q, std::is_constructible поможет.
3
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
22.06.2016, 01:10 #3
Цитата Сообщение от O_Q Посмотреть сообщение
Также хочу сразу спросить, можно ли определять существование метода класса с заданным именем и нужными параметрами.
Если с учётом неявных преобразований аргументов и без учёта типа возвращаемого значения, то это можно относительно просто реализовать. Примерно так (с++11, и возможно я тут не учёл все нюансы):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <utility>
#include <type_traits>
 
 
template<typename...>
struct void_type {
 
   using type = void;   
};
 
template<typename ...T>
using void_t = typename void_type<T...>::type;
 
 
template<typename T, typename = void>
struct is_invokable_with_member_function_foo : std::false_type {};
 
template<typename T, typename ...Args>
struct is_invokable_with_member_function_foo<
      T (Args...)
    , void_t<decltype(std::declval<T>().foo(std::declval<Args>()...))>
> : std::true_type {};
http://ideone.com/hzRM78
Вот только надо писать подобное для каждого интересующего названия метода (или навернуть макрос для генерации).
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2016, 01:10
Привет! Вот еще темы с ответами:

Можно ли построить башню с заданными параметрами? - C++
Вдохновленный легендой о вавилонской башне Петр решил построить ее аналог. Для этого он взял N=22 детских строительных кирпичей и выбрал...

Перезагрузка программы с заданными входными параметрами - C++
Добрый день. В общем есть программа, которая на вход получает имя файла конфигурации. Нужно ее програмно перезагрузить, указав имя нужного...

Вызов функции с не заданными параметрами из объекта класса - C++
Пишу небольшое API, для себя. Сделал следующие: программист указывает объекту класса, имя пакета и какая должна будет вызваться функция,...

Изобразить последовательно зацепленными N шестерней с заданными параметрами - C++
Изобразить в зацеплении две шестерни (зубчатых колеса) какого – либо механизма; диаметры шестерен и количество зубьев задаются. РАЗВИТИЕ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru