Функция С Переменным Числом Параметров Зараннее Неизвестного Типа

Тема в разделе "C/C++/C#", создана пользователем Meridian, 24 ноя 2014.

  1. Meridian

    Meridian New Member

    Регистрация:
    24 ноя 2014
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте, коллеги!
    Прошу помочь начинающему в С++. Есть функция с переменным числом параметров заранеее неизвестного типа.
    Внутри начинаю перебирать параметры по ссылке и на первом же неопределенном получаю проблему с типом float.
    Вот код:

    Код (C++):
    #include "stdafx.h"
    #include <iostream>
    #include <clocale>

    using namespace std;

    template <class ttype>
    void testfun(ttype var1, ttype var2, ...)
    {
    ttype lvar1 = var1;
    ttype lvar2 = var2;
    cout << "Локальные переменные lvar - " << lvar1 << ", lvar2 -" << lvar2 << endl;

    ttype *ptr = &var1;
    cout << "Через ссылку первый аргумент " << ttype(*ptr) << endl;

    ptr++;
    cout << "Через ссылку второй аргумент " << ttype(*ptr) << endl;

    ptr++;
    cout << "Через ссылку третий аргумент " << ttype(*ptr) << endl;
    }

    void main()
    {
    setlocale(LC_ALL, "Russian");

    float a, b, c;

    a = 0.1;
    b = 0.2;
    c = 0.3;

    testfun(a, b, c);

    system("pause");
    }
    Вывод:
    Локальные переменные lvar - 0.1, lvar2 -0.2
    Через ссылку первый аргумент 0.1
    Через ссылку второй аргумент 0.2
    Через ссылку третий аргумент 2
    Для продолжения нажмите любую клавишу . . .

    Третий параметр должен принимать значение 0.3, но это не так. Если на вход подавать переменные
    типа double, то проблемы нет. Подозреваю, что проблема кроется в размерности типа float, но не могу
    ее преодолеть. Help.
     
Загрузка...

Поделиться этой страницей