Форум программистов, компьютерный форум 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. Я попыталась описать классы, вот что получилось. Помогите, пожалуйста, дописать, чтобы строились клетки. Я понимаю, что это делается как-то через функции... подробнее

Показать сообщение отдельно
DrOffset
6840 / 4051 / 924
Регистрация: 30.01.2014
Сообщений: 6,855
12.10.2014, 02:28     Выбор шаблонного варианта для аргумента-массива
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но синтаксически они: int &var_name, то есть идентичны. Я не большой знаток и нигде не видел, чтобы писалось, что такая идентичность, - закон, но думал, что так и есть. Разубеди меня
Не буду разубеждать, потому что эти выкладки не относятся к теме вопроса

Цитата Сообщение от IGPIGP Посмотреть сообщение
робко предполагаю, что компилятор который допускает преобразование массива к ссылке T& не должен бы этого делать.
Ты не читаешь что я тебе пишу.
Это меня печалит.

Давай еще раз:
C++
1
2
3
4
5
    typedef int T [100];
 
    int a[100];
 
    T & ar = a;
Аналогично с шаблоном и изначальным примером. Вместо T подставляется int[100] (реальный тип аргумента), добавляем ссылку - получаем ссылку на массив.

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int a[100];
 
template <typename T>
void foo(T & a);
 
// Вызываем
foo(a);
 
// Выводится T = int[100]
 
template <typename T = int[100]> //T выведен
void foo(T & a); //<-- к T добавляется ссылка
 
//Итого, тип аргумента:
void foo(int (&a)[100]);
В общем я не знаю как еще объяснять

Добавлено через 13 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Ссылка на массив это же не ссылка на тип (элементов массива).
Ссылка на массив - это именно ссылка на тип. Где тип - это тип массива, включающий в себя тип элементов и размерность, т.е. тип составной.
Сбивает с толку чудная запись типа посередине? Ну так это синтаксическая фишка такая в С\С++. В С\С++ объявление можно представить в виде prefix Name suffix, где префикс и суффикс — какие-то строки, вместе образующие правильное выражение. Соответственно, производные типы получаются добавлением операторов (*, &, const, volatile, (), []) к префиксу/суффиксу.
По поводу "недо...". Функции и массивы в С++ непервоклассные объекты (non first class objects), отсюда их свойства: функции нельзя создавать в рантайме. Объект с типом "массив" в рантайме тоже создать нельзя (выражение new возвращает указатель). Функции не копируются, вместо этого приводятся к указателю на функцию, с массивами аналогично.
 
Текущее время: 09:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru