Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618

Ошибка при попытке создания шаблона

16.11.2014, 14:10. Показов 3865. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В чём ошибка?
Функции
Map::isGardenWithoutWallFlag, Map::setNothing, Map::incrementRoad, Map::setFlagWall
имеют действительно такие аргументы, какие надо. Ошибка появилась, как только я добавил в шаблон двойной указатель на int.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template<bool (*func1)(int), void (*func2)(int&), void (*func3)(int&, eDirection),
          void(*func4)(int&), int** tileMap>
static void threeFuncTrySet(int x, int y, eDirection d){
    if(func1(tileMap[x][y])){
        func2(tileMap[x][y]);
        func3(tileMap[x][y], d);
        func4(tileMap[x][y]);
    }
}
 
 
void aabb (int** tileMap){
 
void (*treeFunc)(int, int, eDirection) = &Map::threeFuncTrySet<&Map::isGardenWithoutWallFlag, 
        &Map::setNothing, &Map::incrementRoad, &Map::setFlagWall, tileMap>;
 
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2014, 14:10
Ответы с готовыми решениями:

Ошибка С2280 при попытке создания потока
При попытке создания потока auto t = new thread(&amp;merge, fin, fout, maxmemory, p) вылезает error C2280: предпринята попытка ссылки на...

Ошибка при попытке загрузки файла
Задача состоит в том, чтобы по очереди загрузить файлы, введя их имена в консоль. #include &lt;fstream&gt; #include &lt;iostream&gt;...

Ошибка при попытке открытия файла
Добрый день. При выполнении функции открытия файла F.open(adr,ios::in) по несуществующему адресу программу выбивает при этом появляется...

41
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
16.11.2014, 22:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hoggy Посмотреть сообщение
Технические ограничения очевидно жеж.
Куда они пропали тогда в новом стандарте?
Это были идеологические, или "перестраховочные" ограничения или еще что, может быть просто недоработка и упущение комитета, но никак не технические ограничения. Ничего особо не поменялось ведь.
Кстати, по поводу этого:
Цитата Сообщение от hoggy Посмотреть сообщение
компилятор в состоянии различить два разных объекта по именам, не используя при этом их адреса.
Вот этот пример (твой немного измененный) я компилирую двумя компиляторами: GCC 4.8.1 и CLANG 3.5.0
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
int f1() { return 0; }
int f2() { return 0; }
 
typedef int (*func_t)();
 
template <func_t a> struct func_decl
{
    constexpr static func_t f = a;
};
 
 
template <func_t a, func_t b> struct is_other
{
    enum { value = 1 };
};
 
template <func_t a> struct is_other<a,a>
{
    enum { value = 0 };
};
 
 
int main()
{
    std::cout << "f1 and f2 is other? (must be 1): "<<is_other<f1, f2>::value<<std::endl;
    std::cout << "f1 and f1 is other? (must be 0): "<<is_other<f1, func_decl<f1>::f>::value<<std::endl;
}
И первый его компилирует (и выдает верный результат), а второй нет. Ошибка следующая:
non-type template argument for template parameter of pointer type 'func_t' (aka 'int (*)()') must have its address taken
Вот тут либо один недобдел, либо другой перебдел. Это опять же к вопросу о том где про это написано формальным языком...
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.11.2014, 22:27
Цитата Сообщение от DrOffset Посмотреть сообщение
Куда они пропали тогда в новом стандарте?
Были преодолены.
Комитет решил, что технология практична, и обязал производителей компиляторов реализовать её в своих компиляторах.

Как то так

Цитата Сообщение от DrOffset Посмотреть сообщение
Вот тут либо один недобдел, либо другой перебдел. Это опять же к вопросу о том где про это написано формальным языком...
Хех... видать шланг не осилил constexpr в должной мере ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2014, 22:27

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

Ошибка при специализации шаблона
Пишу: template &lt;&gt; struct Test &lt; int&gt; { Test(int x) :x(x) {} int Cout () { cout &lt;&lt; &quot;Bool&quot;; ...

Ошибка при попытке подключить внешнюю библиотеку
Делал всё по инструкции, только пути другие. Пишет: Гуглёж не помог. Когда-то вроде с glut вылезла такая же проблема, но я не...

Ошибка при попытке сопоставить список аргументов
Выбивает вот такую ошибку: &quot; при попытке сопоставить список аргументов &quot;(overloaded-function, double)&quot; #include...

При использовании шаблона, ошибка с десткрутором
Задание сделать шаблон класса список. Сделал сам список, и добавление элемента и тестовый класс Man. Главная проблема в том, что, когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
42
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru