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

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

Войти
Регистрация
Восстановить пароль
 
SVladimir
0 / 0 / 0
Регистрация: 25.08.2013
Сообщений: 5
#1

Произвольный объект как аргумент функции - C++

29.12.2013, 11:07. Просмотров 789. Ответов 6
Метки нет (Все метки)

Здравствуйте!

Подскажите, пожалуйста, можно ли функции передавать произвольный объект?
В Java есть такая конструкция:

Java
1
2
3
4
public void Foo(Object object)
{
MyClass class = (MyClass) object;
}
Существует ли подобная конструкция в C++?

P.S. Без использования наследования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2013, 11:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Произвольный объект как аргумент функции (C++):

Auto как аргумент функции - C++
Возможно ли объявить параметр функции как auto? void func(auto pt); //...

Класс как аргумент функции - C++
Доброго времени суток:) Набрёл на такой пример в openGL и не могу понять как он робит, подскажите. Вот описание ф-ции: void...

Абстрактный класс, как аргумент функции - C++
добрый день. есть базовый класс Tag внем строковое поле Name есть производные от него класы SmplTag со строковым полем Value и класс...

std::setw() как аргумент функции - C++
void print(const int format = 0) const { for (size_t i = 0; i<m_rows; ++i) { for (size_t j = 0;...

Указатель массива как аргумент функции - C++
Я прочитал несколько алгоритмов сортировки массивов, но не совсем понял, если массив чисел будет передан в аргумент функции через...

Функция как аргумент другой функции - C++
Добрый вечер, уважаемые. Собственно, пытаюсь функцию запихнуть в аргументы другой функции. На подобии маткадовского root(f(x),x,a,b)....

6
dzrkot
zzzZZZ...
522 / 352 / 53
Регистрация: 11.09.2013
Сообщений: 2,025
29.12.2013, 11:17 #2
не перегрузка/шаблоны ...?
1
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
29.12.2013, 11:34 #3
Шаблоны
C++
1
2
3
4
5
template<class T>
void Foo(T object)
{
    T MyClass = object;
}
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
29.12.2013, 11:46 #4
void* и передавай что хочешь. Но ничего хорошего в этом нет.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
29.12.2013, 12:00 #5
Цитата Сообщение от SVladimir Посмотреть сообщение
Без использования наследования.
Цитата Сообщение от SVladimir Посмотреть сообщение
В Java есть такая конструкция:
то есть она без наследования?
0
SVladimir
0 / 0 / 0
Регистрация: 25.08.2013
Сообщений: 5
30.12.2013, 11:15  [ТС] #6
Цитата Сообщение от Tulosba Посмотреть сообщение
void* и передавай что хочешь. Но ничего хорошего в этом нет.
Но все равно это интересно.
Приведите, пожалуйста, пример кода.

Добавлено через 20 часов 23 минуты
Цитата Сообщение от xoror Посмотреть сообщение
Шаблоны
C++
1
2
3
4
5
template<class T>
void Foo(T object)
{
    T MyClass = object;
}
Если я не ошибаюсь, при передаче объекта в качестве аргумента такой функции создается его копия. А как передать объект по ссылке?

Спасибо!
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
30.12.2013, 11:30 #7
Цитата Сообщение от SVladimir Посмотреть сообщение
Приведите, пожалуйста, пример кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
void f( void* p, int type )
{
    switch( type )
    {
        case 0: std::cout << *reinterpret_cast<int*>(p); break; // int
        case 1: std::cout << *reinterpret_cast<double*>(p); break; // double
        //...
    }
    std::cout << std::endl;
}
 
int main() {
    
    int i = 42;
    double d = 3.1415;
    
    f( &i, 0 ); // ok
    f( &d, 1 ); // ok 
    
    f( &i, 1 ); // ошибка 
    f( &d, 0 ); // ошибка
    
    return 0;
}
http://ideone.com/MgRxhb

Добавлено через 1 минуту
Цитата Сообщение от SVladimir Посмотреть сообщение
А как передать объект по ссылке?
Передать по ссылке
C++
1
2
3
4
5
template<class T>
void Foo(T& object)
{
    T MyClass = object;
}
1
30.12.2013, 11:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2013, 11:30
Привет! Вот еще темы с ответами:

Как сделать ввод в аргумент(ы) функции? - C++
Не понятно посмотрите код)#include&lt;iostream&gt; #include&lt;time.h&gt; using namespace std; template &lt;typename T&gt; T midle (T max){ //KOD ...

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

Указатель на функцию с аргументами, как аргумент другой функции - C++
У меня есть некая функция, которая принимает как аргумент другую функцию typedef void(*func_type)(); start(func_type...

Путь к файлу вводится в командной строке как аргумент функции main() - C++
. Путь к файлу вводится в командной строке как аргумент функции main(). Как это написать?


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

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

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