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

оператор-друг для нешаблонного класса, вложенного в шаблонный - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ [Теория] Преобразование Struct * <=> Type * http://www.cyberforum.ru/cpp-beginners/thread799594.html
Здравствуйте, Господа и Дамы. Немного теории, коротко и без зевоты. Итак, есть структура с однотипными переменными. struct coordinat3f{ float x, y, z; }; coordinat3f coord; и есть указатель на переменные того же типа float * f;
C++ нейронные сети (адаптивные сети) нужен исходник 3д или 2д адаптивной сетки для небольшого использования в своей работе (растягивалась что бы на какуюнить фигуру на плоскости или в пространстве) а так же желательно рекомендации литературы по данной теме заранее всем спасибо и всем ответившим по делу +1 ну и желательно на C# но можно и на другом чемнить переделать не долго будет :) Добавлено через 1 минуту самый... http://www.cyberforum.ru/cpp-beginners/thread799581.html
Объясните, как создать класс C++
Описать класс, включающий заданные поля и функции. Разработать программу, которая создает массив объектов (размерность массива n вводится с клавиатуры) и выполняет требуемые действия. Класс - вещественное число, записанное с точкой. Параметры - его значение (вещественный тип) и запись (строковое представление числа). Статус доступа всех полей private. Класс включает: конструктор и функции,...
Построить покрытие булевой матрицы C++
помогите построить покрытие булевой матрицы на си++
C++ Ошибка работы деструктора http://www.cyberforum.ru/cpp-beginners/thread799546.html
Здравствуйте. Недавно начала программировать на C++, поэтому возможно жителям данного форума мой вопрос покажется сильно нубским. Тем не менее. Имею класс class MyClass { private: int x,y,z; public: MyClass(int=0;int=0;int=0); ~MyClass();
C++ Создание Службы Windows Добрый день, с С++ не знаком вообще, стоит задача написать несколько служб на нем, до этого писал на С#, ну вынужден от него отказаться, вообще как их писать в С++? если в С# был мастер создания, то тут я вообще понять не могу, в инете все примеры которые я нашел просто не запускаются и даже не компилятся... Подскажите вообще что делать? Если кому не сложно то сбросьте ICQ или Skype, не буду... подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
03.03.2013, 20:12     оператор-друг для нешаблонного класса, вложенного в шаблонный
вот может немного модифицированный предыдущий вариант устроит:
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
#include <iostream>
 
template <class T>
class A
{
public:
    class B
    {
    public:
        friend void plus(int, B);
        friend void operator + (int i, B b) { plus<T>(i, b); }
    };
};
 
template <class T>
void plus(int, typename A<T>::B)
{
    std::cout << "HERE" << std::endl;
}
 
int main()
{
    A<int>::B a;
    10 + a;
    return 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
#include <iostream>
 
template <class T>
class A
{
public:
    class B
    {
    public:
        template <class Y>
        friend void operator + (int, typename A<Y>::B);
 
        friend void operator + (int i, B b) { operator + <T>(i, b); }
    };
};
 
template <class T>
void operator + (int, typename A<T>::B)
{
    std::cout << "HERE" << std::endl;
}
 
int main()
{
    A<int>::B a;
    10 + a;
    return 0;
}
Добавлено через 8 минут
и еще забавная штука у VS2008.
если закоментировать строки 18-22, то код компилится и линкуется, только вот функция на строке 14 вызывается саму себя рекурсивно. похоже на баг студийный.
 
Текущее время: 22:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru