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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
#1

Классы.Дружественные функции - C++

23.04.2009, 17:52. Просмотров 2934. Ответов 6
Метки нет (Все метки)

Пример с книги "Visual CPP 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
31
32
33
34
35
36
37
38
39
//
// 
//  friend.cpp 
//  Эта программа на языке C++ демонстрирует использование дружественных  
//  функций. Программа получает от системы информацию о текущей дате и  
//  времени и вычисляет количество секунд, прошедших после полуночи. 
// 
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <ctime> // содержит прототипы ф-ций
time(),localtime(),
//asctime() ,а также описание структур tm и time_t
class time_class{
    long sees;
    friend long pre(time_class);
    //дружественная ф-ция
public:
    time_class(tm*);
    time_class::time_class(tm* timer){
        sees = timer->tm_hour*3600 + timer->tm_min*60 + timer->tm_sec;
    }
    long pre(time_class);// прототип main()
    {
        //получение данных одате и времени от системы
        time_t ltime;
        tm* ptr;
        time(&ltime);
        ptr = localtime(&ltime);
        time_class tz(ptr);
        cout << "Текущая дата и время: " << asctime(ptr) << endl;
        cout << "Число секунд, прошедших после полуночи: " << pre(tz) << endl;
        getchar();
        return(0)
    }
    long pre(time_class tz){
        return(tz.sees);
    }
}
Ошибки:
Код
1>c:\myprojects\friend\friend\friend.cpp(8) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\myprojects\friend\friend\friend.cpp(8) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\myprojects\friend\friend\friend.cpp(10) : error C2059: синтаксическая ошибка: <class-head>
1>c:\myprojects\friend\friend\friend.cpp(10) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\myprojects\friend\friend\friend.cpp(10) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2009, 17:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Классы.Дружественные функции (C++):

Дружественные функции и классы - C++
Доброго времени суток ! Может у кого - нибудь есть похожие исходники или мысли по поводу данного задания ?! Помогите пожалуйста ! ...

Дружественные функции и классы - C++
Добрый вечер, я готовлюсь к госам и там есть такая штука как Дружеские функции и классы, и вот хотел спросить зачем ваше нужны дружеские...

Классы, матрицы, перегрузка операторов, дружественные функции - C++
Гляньте пожалуйста, как получилось сделать задание, что неверно: Создать класс, в котором перегрузить операторы: &amp; для...

Дружественные перегрузки операторов и дружественные классы - C++
#include &lt;iostream&gt; using namespace std; class person; class book { public: book(){}; int get_inf(person &amp;a); void...

Дружественные классы. - C++
Есть ли смысл в коде: class A{ ... public: bool ff(); } class B{

Дружественные классы - C++
Помогите !!! Завтра надо сдавать а я ету тему совсем непонимаю... Создайте класс Matrix для хранения матрицы целого типа. Создать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
24.04.2009, 09:40 #2
Собственно, дружественная функция - это функция не являющаяся членом класса, но имеющая доступ к данным этого класса. Что касается твоей программы, тут очень много чисто синтаксических ошибок, и чтобы помочь, нужно знать, как ты этот класс собираешься использовать.
0
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
24.04.2009, 16:16  [ТС] #3
Код полностью переписан с книги, что я указывал выше. Как я понял по объяснению, то прога должна вывести время,что на системных часах и подсчитать сколько прошло сек. после полуночи.
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
24.04.2009, 17:37 #4
во-первых, после описания класса не стоит точка с запятой...
во-вторых, строчка time(),localtime(), должна быть закомментирована
в-третьих, нет основной процедуцры main() и нет объекта этого класса..

вывод: ничего не выведится точно) исправляй ошибки...
0
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
24.04.2009, 18:06  [ТС] #5
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
во-первых, после описания класса не стоит точка с запятой...
во-вторых, строчка time(),localtime(), должна быть закомментирована
в-третьих, нет основной процедуцры main() и нет объекта этого класса..
Вызвал main(), закомментировал,поставил после описания класса ;.

Тут, походу, неправильно написано код.
Напишите код с использованием дружественных ф-ций для вывода времени системных часов.
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
24.04.2009, 19:36 #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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <ctime>
using namespace std;
 
class time_class
{
    private:    
        long sees;
        friend long pre(time_class);
 
    public:
        time_class() {}
        time_class(tm* timer)
        {
                sees = timer->tm_hour*3600 + timer->tm_min*60 + timer->tm_sec;
        }
 
        long pre()
        {
                //получение данных одате и времени от системы
                time_t ltime;
                tm* ptr;
                time(&ltime);
                ptr = localtime(&ltime);
                time_class tz(ptr);
                cout << "Date and time (Now): " << asctime(ptr) << endl;
                cout << "Number of seconds after midnight: " << pre(tz) << endl;
                getchar();
                return(0);
        }
 
        long pre(time_class tz)
        {
                return(tz.sees);
        }
};
 
int main()
{
    time_class t;
    t.pre();
 
    return 0;
}
1
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
25.04.2009, 02:19  [ТС] #7
Спс, осталось только понять, как это все работает
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2009, 02:19
Привет! Вот еще темы с ответами:

Дружественные классы - C++
Всем привет! Нашел в интернете как подружить два класса, вышло Но в моёй ситуции нужно классы поменять местами, а из-за это ничего...

Дружественные классы - C++
Есть два класса. первый - основной, в нем все нужные поля. второй, в нем должен быть некий метот который должен использовать поле основного...

Дружественные классы - C++
- У меня имеется класс: struct ListNodeBase { // ......... private: ListNodeBase *prev_, *next_; // связи с соседями....

Дружественные классы - C++
Доброго времени суток, Господа. Собственно, хотел бы услышать Вашего мнения по поводу использования дружественных классов. Сколько книг...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.04.2009, 02:19
Ответ Создать тему
Опции темы

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