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

Friend declaration construction - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Какой паттерн подойдет, чтобы избежать длинных ветвлений? http://www.cyberforum.ru/cpp/thread1780896.html
здравствуйте, есть код схематично такой: class CTest_base { public: CTest_base() : vec() {} virtual ~CTest_base() noexcept {} //something else protected: std::vector<int> vec;...
C++ Что такое фреймворк? Доброго времени суток. Объясните пожалуйста на счет фреймворков. Несколько минут погуглив я примерно понял что это такое, но все же остались сомнения. В универе нам сказали писать программы в QT. При... http://www.cyberforum.ru/cpp/thread1780854.html
C++ Скорость или размер. Динамика
Есть ряд вопросов.. 1) Что быстрее считает процессор (соответственно с разрядностью). К примеру динамически создаётся массив. Из этого массива надо вычислить к примеру c=a+b. Если c = m и a = m, то...
C++ Существует ли какие-нибудь мета редакторы(авто дописывание кода)?
Всем доброго времени суток! Я решил оптимизировать свою работу и придумал следующую идею на основе авто кода в C++ XE3. Если в среде написать switch и следать пробел, то программа сама допишет то,...
C++ Таблица символов для компилятора http://www.cyberforum.ru/cpp/thread1778725.html
Делаю простой компилятор и что-то зависла на вопросе о том, как хорошо реализовать таблицу символов. Реализовать в виде класса, где в качестве поля используется, скажем, вектор, в который добавляются...
C++ Хэш код для нормализованного вектора Мне нужно генерировать 64-разрядный хэш для трехмерных нормализованных векторов (double). Хэши должны быть равны если сгенерированы из одного или равных (поэлементно) векторов. У кого какие мысли?... подробнее

Показать сообщение отдельно
hoggy
Нарушитель
6578 / 2759 / 476
Регистрация: 15.11.2014
Сообщений: 6,105
Завершенные тесты: 1
16.07.2016, 16:17
Цитата Сообщение от Nosey Посмотреть сообщение
Вам не кажется что это бред?
нет, не кажется.
квалифицированная - значит имеет полное имя с указанием всех спейсов.

http://rextester.com/YOURR59359
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
#include <iostream>
 
template <typename T> void multiply(T);
 
namespace sample{
 
class Pride
{
    int p;
public:
    friend void ::multiply<int>(int);
    friend void ::multiply<double*>(double*);
};
    
}namespace sample    
 
template <>
void multiply(double*)
{
    Pride pr;
    pr.p = 0; /* тут все нормально */
    (void)pr;
    
}
 
template <>
void multiply(int)
{
    Pride pr;
    pr.p = 0; /* а тут ошибка, то есть эта специализация не является дружественной */
    (void)pr;
}
 
 
int main()
{
    std::cout << "Hello, world!\n";
}

Код
Error(s):
source_file.cpp:19:1: error: expected ‘{’ before ‘template’
 template <>
 ^
source_file.cpp:20:22: error: ‘multiply’ is not a template function
 void multiply(double*)
                      ^
source_file.cpp:29:18: error: ‘multiply’ is not a template function
 void multiply(int)
                  ^
source_file.cpp: In function ‘int sample::main()’:
source_file.cpp:40:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
source_file.cpp: At global scope:
source_file.cpp:40:1: error: expected ‘}’ at end of input

дружественная функция, определение которой описано в теле класса не имеет к этому никакого отношения

Добавлено через 55 секунд
Цитата Сообщение от avgoor Посмотреть сообщение
Вы не правильно поняли.
Вот так можно:
квалифицированная - значит имеет полное имя с указанием всех спейсов.
дружественная функция,
определение которой описано в теле класса,
не имеет к этому никакого отношения

Добавлено через 1 минуту
получается, что книга не врет.
но почему то не работает ...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru