Форум программистов, компьютерный форум CyberForum.ru

Выбор шаблонного варианта для аргумента-массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка "Недопустимый else без парного if" http://www.cyberforum.ru/cpp/thread1273030.html
#include <iostream> #include <stdio.h> using namespace std; // ВЫВОД МАТРИЦЫ НА ЭКРАН void print(int **Q, int x, int y) { int i, j; for (i = 0; i<x; i++)
C++ Unexpected() не вызывается Всем привет! Читаю бессмертный труд Страуструпа Язык программирования С++издания 2011 года (п.14.6 о спецификации исключений): Если во время своего выполнения она (функция со спецификацией исключений) попробует произвести действия, нарушающие объявленную гарантию, такая попытка приведет к вызову стандартной функции std::unexpected (). По умолчанию, функция std::unexpected() вызывает... http://www.cyberforum.ru/cpp/thread1273018.html
Разделить функцию на две C++
Выполнил контрольную. Все работает как надо. Но потом заметил, что пропустил в условии "минимум 2 функции". Помогите без потерь переместить кусок кода из 1 функции в другую. Желательно тот кусок, который "//вычисляю строку по убыванию и записываю ее номер". #include <stdio.h> int dop(int,int,int,int); #define nn 20 int main() { int mas,l,h,i,j,k,s;
C++ Найти среднее арифметическое массива
Для B найти среднее арифметическое подсказка: S2(вещественное)=sum(целое)/n 1) сделать sum вещ. 2) s2=1.+sum/n 3)s2=float(sum)/n
C++ Перевод из 6-ричной системы в десятичную http://www.cyberforum.ru/cpp/thread1272994.html
На вход программе подается строка символов, оканчивающаяся точкой, и состоящая из ненулевого количества неотрицательных целых чисел, записанных в 6-ричной системе счисления. Каждые 2 соседних числа разделены непустой последовательность пробелов и/или :. Каждое число состоит не более, чем из 5-ти разрядов, ведущие нули и знак + не используется. Общая длина строки, включая точку, не должна...
C++ Создание шахматного поля Добрый вечер. Я пытаюсь написать простую игру шахматы в ООП, с графикой. Начала с создание доски и описания классов: поле(field) и клетки черные и белые(cell). Я не очень понимаю как использовать графику. Хочу создать поле как массив клеток 8х8. Я попыталась описать классы, вот что получилось. Помогите, пожалуйста, дописать, чтобы строились клетки. Я понимаю, что это делается как-то через функции... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6348 / 2995 / 295
Регистрация: 04.12.2011
Сообщений: 8,031
Записей в блоге: 3
12.10.2014, 00:11     Выбор шаблонного варианта для аргумента-массива
Цитата Сообщение от DrOffset Посмотреть сообщение
IGPIGP, у тебя в самом начале рассуждений ошибка, которая и завела тебя в тупик.
Возможно. Давай поговорим:
Цитата Сообщение от DrOffset Посмотреть сообщение
никто не утверждал, что будет преобразование к ссылке на тип. Я писал:
Цитата Сообщение от DrOffset Посмотреть сообщение
T разрешится в ссылку на массив
Я понимаю, что объявление в коде и в формальных параметрах имеет совершенно разный смысл:
C++
1
2
3
4
int a=123;
int &ref_a=a;//объявлен псевдоним для a без создания переменной
//а тут:
void foo( int &a);//грубо говоря, функция ожидает имя переменной с типом: всё что неявно преобразуемо к int
Но синтаксически они: int &var_name, то есть идентичны. Я не большой знаток и нигде не видел, чтобы писалось, что такая идентичность, - закон, но думал, что так и есть. Разубеди меня.
Ссылка на массив это же не ссылка на тип (элементов массива). То что массив это не тип"недотип", а именно массив (элементов)типа, предлагаю, тут не затрагивать. Достаточно того, что ни внутренне ни внешне эти ссылки не имеют ничего общего:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//переменная типа int
int b=123;
 
//ссылка на int 
int &a = b;//псевдоним b
 
//функция объявляет формальный параметр - ссылка int
void foo(int &c);//сюда можно передать и a и b
 
 
//массив тип/ов/а int
int a[3] = {1, 2, 3};
 
//ссылка на имя массива a
int (&ref_arr_a)[3] = a;
 
//синтаксически от объявления void foo(int &c); тоже отличается и тоже сходно с прямым объявлением переменной- ссылки:   
void foo(int (&ref_arr)[3]); //функция ожидает массив int из 3 элементов по ссылке
В чём же логическая ошибка. И у кого?
зы: робко предполагаю, что компилятор который допускает преобразование массива к ссылке T& не должен бы этого делать.
 
Текущее время: 10:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru