Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2012, 01:17   #11
ERAGORN
Пользователь
 
Аватар для ERAGORN
 
Регистрация: 02.01.2012
Сообщений: 46
По умолчанию

Код:
// ...
    cout << "Введите вид платежа: ";
    char purpose [50];
    cin.getline (purpose, 50 );

    double sum = 0;
    for ( int i = 0; i < n; ++i )
        if ( ! strcmp ( purpose, mas[i].PurposeOfPayment ) )
            sum += mas [i].Amount;
// ...
ERAGORN вне форума Ответить с цитированием
Старый 08.01.2012, 01:23   #12
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

_Bers

является ли
Код:


friend istream& operator>>(istream &ist, Pay&P)
{ ist>>P.PaymentNumber>>P.Amount>>P.P urposeOfPayment; return ist;}

Членом класса, или не является? А если не является, то почему тогда функция определенная в теле класса вдруг оказалась не его членом?


Почитайте уже наконец Стандарт C++, если вы этого еще не сделали, там вы найдете ответы на свои вопросы. В частности, рекомендую ознакомиться с разделом 11.3 (Friends) и обратить внимание на подпункт 6

Цитата:
A function can be defined in a friend declaration of a class if and only if the class is a non-local class (9.8),
the function name is unqualified, and the function has namespace scope. [ Example:
Код:
class M {
   friend void f() { } // definition of global f, a friend of M,
// not the definition of a member function
};
Rififi вне форума Ответить с цитированием
Старый 08.01.2012, 01:27   #13
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

Ниже представленный код наглядно демонстрирует тот факт, что ключевое слово friend сообщает компилятору о том, что функция является другом класса, но не членном этого класса. А так же, демонстрирует тот факт, что компилятор расположит дружественную функцию в глобальной области видимости

Ну, спасибо конечно, за демонстрацию, и все такое, но я КаГбЭ в курсе, и нигде не утверждал обратного. Более того, о каких-либо особенностях используемого инструмента предпочитаю узнавать не из наколенных эксперементов, а непосредственно из первоисточника.
Rififi вне форума Ответить с цитированием
Старый 08.01.2012, 01:31   #14
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
Почитайте уже наконец Стандарт C++, если вы этого еще не сделали, там вы найдете ответы на свои вопросы. В частности, рекомендую ознакомиться с разделом 11.3 (Friends) и обратить внимание на подпункт 6
А где его брать то вообще? Этот стандарт?

Единственный линк, который я знаю: http://open-std.org/
Но там совершенно не понятно, как искать нужную информацию.
Где и как там искать этот раздел 11.3 ?
_Bers вне форума Ответить с цитированием
Старый 08.01.2012, 01:42   #15
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

А где его брать то вообще? Этот стандарт?



Сначала вы путаетесь в спецификации языка, теперь оказывается вы не умеете пользоваться гоогле. Боюсь даже предствить, какие еще шокирующие детали о вас могут открыться.

алгоритм действий

1. идем на вики, вбиваем в поиск C++
2. попадаем на страницу http://en.wikipedia.org/wiki/C%2B%2B
3. нажимаем Ctrl+F, вбиваем слово standard (если у вас Firefox, нажимать Ctrl+F не надо)
4. находим фразу "the C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998. The standard was amended by the 2003 technical corrigendum, ISO/IEC 14882:2003."
5. открываем google
6. вбиваем iso iec 14882 download
7. нажимаем кнопку search
8. ...
9. PROFIT!

Вся операция заняла 3 минуты. из них 2 минуты 40 секунд - описание алгоритма.
Rififi вне форума Ответить с цитированием
Старый 08.01.2012, 02:01   #16
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Rififi, пасип


Все равно не понятно, как искать интересующую информацию в стандарте. Допустим, нарыл я файлик pdf со стандартом.

Рассмотрим пример:

Код:
struct Pay { string PaymentNumber; double Amount; string PurposeOfPayment;};
struct Pay1{ string PaymentNumber; double Amount; string PurposeOfPayment;};

void operator=(Pay& lv, Pay1& rv){} //: error C2801: 'operator =' не должен быть статическим членом

int main()
{
    Pay test;     Pay1 test1;
    test = test1;

   return 0;
}
Погуглив, я нарыл информацию на русском языке, о том, что действительно нельзя глобально перегрузить operator=
Он должен быть мембером класса. Ладно...

А теперь я хочу найти в стандарте раздел и пункт, где это правило прописано черным по белому.
И как вот можно найти эту информацию?

Мне что, весь стандарт нужно последовательно перечитать, что бы знать где там что в каких разделах?

Пробовал делать поиск operator= по всему файлику, но он ничего не дал.
Ток 12 раздел, о специфических методах которые могут быть неявными. Но это не то, что нужно.

Последний раз редактировалось _Bers; 08.01.2012 в 03:13.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10