Re[2]: Помогите с выведением и преобразованием типа
От: Alexander Pazdnikov  
Дата: 23.12.09 09:03
Оценка:
Здравствуйте, jazzer, Вы писали:

J>добавление конструктора в carray поможет?


По-моему, как-то не правилно понял ваш совет по добалению конструктора: приходится указывать размер массива явно ?
Поправьте, пожалуйста.

#include <iostream>

using namespace std;

template<typename T, size_t N>
struct carray
{
    carray(T (&arr)[N]) : parr(arr), size(N) // добавил конструктор
    {
    }
    T *parr;
    size_t size;
};

template <size_t N>
void f1(const carray<int, N>& arr)
{
    for (size_t i = 0; i < arr.size; ++i)
    {
        cout << arr.parr[i] << endl;
    }
}

int main(int argc, char *argv[])
{
    int data[] = {1, 2, 3};
....
//  f1(make_carray(data));
    f1(carray<int, 3>(data)); // приходиться явно указывать размер массива

    f1(data); // так не компилиться, говорит - ошибка: нет соответствующей функции для вызова ‘f1(int [3])
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.