Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 04.01.2013
Сообщений: 11

C++11::templates::compilation failure

22.02.2013, 22:00. Показов 1328. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему не компилируется. Объяснить.

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
30
template< unsigned v = 10 >
class a
{
public:
class b
{
std::vector< char > seq;
int n;
friend void std::swap<>( b &, b & );
};
};
namespace std
{
template<unsigned h>
void swap(
a<h>::b & lhs,
a<h>::b & rhs
)
{
std::swap( lhs.vec, rhs.vec );
std::swap( lhs.n, rhs.n );
}
}
 
int main()
{
a<>::b o1();
a<>::b o2();
std::swap(o1,o2);
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2013, 22:00
Ответы с готовыми решениями:

Compilation Error
Решал вот эту задачу: http://acmp.ru/index.asp?main=task&amp;id_task=297 Код написал следующий: #include &lt;iostream&gt; #include...

Почему Compilation error?
Дан некоторый набор букв и словарь. Ваша задача - подсчитать, сколько различных слов из словаря можно составить из этих букв. Входные...

Говорят Compilation error
Решаю задачи на сайте acmp.ru раньше решал на Паскале, сейчас решил учить С++... пытаюсь решить эту задачу...

6
22.02.2013, 22:12
Лучший ответ Сообщение было отмечено как решение

Решение

Не по теме:

потому что фигня какая-то написана ;-)

4
1 / 1 / 0
Регистрация: 04.01.2013
Сообщений: 11
22.02.2013, 22:20  [ТС]
Цитата Сообщение от Герц Посмотреть сообщение

Не по теме:

потому что фигня какая-то написана ;-)

Включённые файлы и вместо vec seq ( добавить ).
Но как бы ты определил std::swap, работающий для любой a<>::b специализации?
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.02.2013, 22:42
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
template <unsigned H = 10>
class Foo
{
public:
    class Bar
    {
    public:
        Bar(int n, std::vector<char>&& v): _n(n), _v(std::move(v))
        {
 
        }
 
        friend void swap(Bar&, Bar&);
        friend std::ostream& operator<< (std::ostream& stream, Bar& b)
        {
            stream << "N: " << b._n << std::endl;
            for(std::size_t i = 0; i < b._v.size(); ++i)
                stream << b._v.at(i) << ' ';
            return stream;
        }
 
    private:
        int                 _n;
        std::vector<char>   _v;
    };
};
 
namespace std
{
 
template <unsigned H>
void swap
(
    typename Foo<H>::Bar& b1,
    typename Foo<H>::Bar& b2
)
{
    std::swap(b1._v, b2._v);
    std::swap(b1._n, b2._n);
}
 
} // namespace std
 
int main()
{
    Foo<>::Bar b1(42, {'a'}), b2(24, {'b'});
    std::swap(b1, b2);
    std::cout << b1 << std::endl;
    std::cout << b2 << std::endl;
    return 0;
}
0
1 / 1 / 0
Регистрация: 04.01.2013
Сообщений: 11
23.02.2013, 00:03  [ТС]
Цитата Сообщение от soon Посмотреть сообщение
C++
1
2
...
}
Только вызывается STL определённая функция при
C++
1
std::swap(b1, b2);
(VS2012).
1
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.02.2013, 01:27
Гляньте тут: http://stackoverflow.com/quest... e-inferred
0
1 / 1 / 0
Регистрация: 04.01.2013
Сообщений: 11
23.02.2013, 02:48  [ТС]
Цитата Сообщение от soon Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
// Вставить код, нах. выше
int main()
{
    Foo<>::Bar b1(42, std::vector<char>()), b2(24, std::vector<char>());
    std::swap<10U>(b1, b2);
    std::cout << b1 << std::endl;
    std::cout << b2 << std::endl;
    return 0;
}
В этом и дело - невыводимый контекст. При использовании кода выше одна из ошибок, "выплёвываемых" компилятором VS2012, - error C2248: 'Foo<>::Bar::_v' : cannot access private member declared in class 'Foo<>::Bar'. Сиречь, Bar "зафрэндил" иную специализацию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2013, 02:48
Помогаю со студенческими работами здесь

No such file or directory compilation terminated
Из-за чего возникает такая ошибка? Или он не видит библиотеку, если не видит, то как подключить?

Variardic templates
Вообщем есть одна задумка, реализовать одну штуку :D Надеюсь общую идею изображу в коде ниже: #include &lt;iostream&gt; #include...

Variadic templates
1. как можно сделать чтобы передавались ссылки на переменные? (с variadic templates) 2. как вообще обращаться к переменным объявленным...

Variadic templates
как можно сделать чтобы функция принимала бесконечное количество объектов std::string? (только их) я пробовал вот так: template&lt;const...

Variadic Templates
проблема только в переводе на русский, обычно это &quot;Шаблоны с переменным числом аргументов&quot; но такое длинное выражение долго не...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru