Войти
ФлеймФорумПрограммирование

Преобразование ссылок на массив [KRESTOPROBLEMY] (2 стр)

Страницы: 1 2 3 48 Следующая »
#15
20:23, 28 мар. 2018

1 frag / 2 deaths
> Поэтому нельзя деривед передавать туда, где ожидается басе?
дивевиды и баси не имеют к поршням ни малейшего отношения.


#16
20:48, 28 мар. 2018

Kartonagnick
> дивевиды и баси не имеют к поршням ни малейшего отношения.
Масивы на 100 и на 120 имеют точно такое же отношение к поршням, что и басе с дериведом.

#17
20:57, 28 мар. 2018

1 frag / 2 deaths
> Масивы на 100 и на 120 имеют точно такое же отношение к поршням, что и басе с
> дериведом.

у массивов и поршней есть одно общее:
и там, и там, нужно что бы всё было тютелька-в-тютельку,
и ещё какие то другие особенности сексуальной жизни лилипутов.

#18
21:40, 28 мар. 2018

Развели опять непонятно что, нахер не нужно, а если нужно то спокойно решается самописными массивами/слайсами.

#19
21:46, 28 мар. 2018

велосипеды не нужны. откройте для себя шаблоны

#20
21:52, 28 мар. 2018

Panzerschrek[CN]
> |7|error: invalid initialization of reference of type 'const int (&)[100]' from
> expression of type 'int [120]'
http://rextester.com/ETLHA53919

#include <iostream>

template<class T, size_t N>
void f( const T (&x)[N] ){}

int main()
{
      int x[100], y[120];
      f(x);
      f(y);
    std::cout << "Hello, world!\n";
    return 0;
}
В чём вопрос то?
#21
21:53, 28 мар. 2018

Kartonagnick
> у массивов и поршней есть одно общее:
> и там, и там, нужно что бы всё было тютелька-в-тютельку,
Тема как раз про то, что это "общее" - лишнее.

#22
21:57, 28 мар. 2018

кому лишнее, тот педалит в стиле си

#23
21:58, 28 мар. 2018

*Lain*
Если ты считаешь, что этот код передает int[120] по ссылке const int (&)[100] - ты ошибаешься.
Если ты так не считаешь - вот нахера ты это запостил? Кого-то волновал вопрос "как передать тип по ссылке на него"?
Нет. Вопрос был, почему типы не кастятся.

#24
22:06, 28 мар. 2018

когда человекам нужно решение, они юзают шаблон.

когда им нужно потромбовать мазги - идут на гд

#25
22:12, 28 мар. 2018

beejah
> Если ты считаешь, что этот код передает int[120] по ссылке const int (&)[100] -
> ты ошибаешься.
Я так не считаю, но реализация f у ОПа не написана, так что ему может подойти. Он же хочет впихивать что угодно. Я ему это просто позаволил.
Теперь у него есть возможность забрать у себя эту свободу частично, например так:
http://rextester.com/ZKL22738

#include <iostream>
#include <algorithm>

template<class T, size_t N>
void f( const T (&x)[N] )
{
    static_assert(N>10 && N<200, "N govno");
    size_t n = (std::min)((size_t)100, N);
    for(size_t i = 0; i<=n; ++i)
        std::cout<<i<<":"<<x[i]<<";";
}

int main()
{
    int x[100]={}, y[120]={}, z[80]={};
      f(x);
    std::cout <<std::endl;
      f(y);
    std::cout <<std::endl;
      f(z);
    std::cout <<std::endl<< "Hello, world!\n";
    return 0;
}
Теперь хвостики массива могут не волновать ОПа.
Если реально вопрос про каст, то ему в PHP или JavaScript. Там больше свободы на автокасты
#26
22:17, 28 мар. 2018

*Lain*
Ну, в общем-то, вариант. А зачем это надо ОПу - это вообще вопрос трансцедентный.
Я не знаю, что нужно делать, чтобы испытать в подобном нужду.

#27
22:24, 28 мар. 2018

2018
массивы на стеке

#28
5:30, 29 мар. 2018

beejah
> Я не знаю, что нужно делать, чтобы испытать в подобном нужду.
Да нужды то особой нету, тема чисто теоретическая.

Главный вопрос тут уже поднимался Тарасом - почему между массивами разных размеров нету отношений родства.

#29
5:42, 29 мар. 2018

Panzerschrek[CN]
> Главный вопрос тут уже поднимался Тарасом

Если ты не заметил - ему уже ответили.

Страницы: 1 2 3 48 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.