1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
||||||
1 | ||||||
Передача адреса класса в функцию12.01.2018, 19:17. Показов 1228. Ответов 25
Метки нет (Все метки)
Здравствуйте
У меня такой вопрос, нигде не могу найти ответ: как сделать так, чтобы функция принимала адрес класса, или какой-то неопределенный тип, чтобы потом уже узнать адрес? Вот допустим код:
0
|
12.01.2018, 19:17 | |
Ответы с готовыми решениями:
25
Передача адреса функции в функцию (Класы) Передача адреса суммы двух чисел в функцию Передача объекта класса в функцию С++ Передача в функцию метод класса |
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
|
|
12.01.2018, 19:29 | 2 |
Novohudonosor, никак, классов в рантайме не существует.
1
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|||||||||||
12.01.2018, 19:29 | 3 | ||||||||||
или по ссылке
1
|
75 / 26 / 22
Регистрация: 22.06.2013
Сообщений: 127
|
||||||
12.01.2018, 19:31 | 4 | |||||
1
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
|
12.01.2018, 19:42 [ТС] | 5 |
Да, забыл просто. Спасибо. Сейчас посмотрю ваш вариант.
Добавлено через 3 минуты С помощью template <typename V> ? Не, не канает. Т.е. канает, только теперь при создании L, компилятор ругается, что отсутствует список аргументов для шаблон класса Добавлено через 4 минуты А что делать, если мне нужно работать с этим классом внутри этой функции?
0
|
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
|
|
12.01.2018, 19:48 | 6 |
Novohudonosor, ну, вы можете использовать имя класса, чтобы достучаться до него. Вы можете писать шаблоны чтобы принимать типы данных в качестве параметров. Но я полагаю вы просто путаете понятия "класс" и "объект (экземпляр) класса".
0
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
|
12.01.2018, 19:50 [ТС] | 7 |
я не путаю. Мне просто нужно, чтобы эта функция могла принимать какой-то новый класс без изменения синтаксиса класса L
0
|
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
|
|
12.01.2018, 20:00 | 8 |
Novohudonosor, путаете
0
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
|
12.01.2018, 20:03 [ТС] | 9 |
да я там просто код неправильно написал) ничего я не путаю.
Там например в коде на строчке 24 объявляется экземпляр a1 класса V.
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
12.01.2018, 20:08 | 10 |
Novohudonosor, если тебе требуется функция, принимающая аргумент типа, который будет известен только в момент вызова, то скорее всего тебе нужен шаблон этой функции. И компилятор самостоятельно наделает тебе машинный код таких же функций для всех типов, которые будешь использовать.
1
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
|||||||||||
12.01.2018, 20:38 [ТС] | 11 | ||||||||||
Я в общем сделал. Спасибо всем! Я не в том месте писал просто template <typename V>
А теперь у меня возник следующий вопрос, тут я немного код дописал, чтобы понятнее было:
Добавлено через 7 минут там, где написано
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
12.01.2018, 20:43 | 12 | |||||
T вместо V, потому что лучше не перемешивать названия классов с параметрами шаблона.
1
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
|
12.01.2018, 20:44 [ТС] | 13 |
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
12.01.2018, 20:44 | 14 | |||||
Подключение (параметризация) V вместо T происходит непосредственно в строке
0
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
|
12.01.2018, 20:45 [ТС] | 15 |
А почему через точку не работает?
Добавлено через 35 секунд не понял. Ну где какие буквы поменять я знаю, если ты об этом.
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
12.01.2018, 20:45 | 16 | |||||
Хотя можно указывать подставляемый класс явно,
1
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
|
12.01.2018, 20:47 [ТС] | 17 |
не понял опять) Что ты сделал этой буквой <V> ?
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||||||||||||
12.01.2018, 20:49 | 18 | ||||||||||||||||||||
Чтоб работало через точку, передавать нужно не
Указал, что функцию void Add(T) нужно сгенерировать для твоего класса class V , подставив вместо typename T твой класс V.
1
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 19
|
||||||
12.01.2018, 23:15 [ТС] | 19 | |||||
А подскажите пожалуйста, что значит вот такая запись:
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||
13.01.2018, 00:01 | 20 | ||||||||||
А не
Добавлено через 1 минуту Потому что тот код, который в посте выше, выдаст ошибку компилятора
1
|
13.01.2018, 00:01 | |
13.01.2018, 00:01 | |
Помогаю со студенческими работами здесь
20
Передача private класса в функцию Передача параметра в функцию класса Передача ссылки на обьект класса в функцию Передача параметров в дружественную функцию класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |