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

Как передать ссылку на объект в класс - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,078
20.02.2013, 00:39     Как передать ссылку на объект в класс #1
Здравствуйте! Подскажите, пожалуйста, почему не работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
log.h
class LogClass
{
public:
    bool InitializeLog();
    void Write(char*);
private:
    std::ofstream m_fout;
};
main.h
....
LogClass* Log;
Log = new LogClass;
Log.InitializeLog();
ClassA->Function(&Log);
....
 
ClassA.cpp
bool SystemClass::Function(LogClass* Log)
{
    Log->Write("Hello");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
22.02.2013, 16:10     Как передать ссылку на объект в класс #21
ITcrusader,
C++
1
2
3
4
5
6
7
#pragma once
#ifndef HEADER_H
#define HEADER_H
 
// тут все содержимое заголовочного файла...
 
#endif
Ну уж либо одно, либо другое.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 16:46     Как передать ссылку на объект в класс #22
Цитата Сообщение от Helldrg Посмотреть сообщение
Вы имеете ввиду реализацию класса в .сpp делать а прототипы в .h?
Да. Кроме шаблонов.
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,078
22.02.2013, 19:08  [ТС]     Как передать ссылку на объект в класс #23
Ну это хорошо я всегда так пишу))
А если шаблоны писать в классе то потом ошибки не будет?(Это просто так еще раз уточнить)
И еще, помните я говорил, что хороший ли это способ создания логера(журнала) ошибок, так вот можете на него ответить?) Может быть в сpp есть функция или еще что то, которая выводит ошибки или сохраняет их. Или может класс лучше переписать, что бы был более как бы так сказать быстрее что ли или проще)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 19:28     Как передать ссылку на объект в класс #24
Цитата Сообщение от Helldrg Посмотреть сообщение
А если шаблоны писать в классе то потом ошибки не будет?
Прототип шаблона и его реализация должны быть в одном файле(но не специализация).
Цитата Сообщение от Helldrg Посмотреть сообщение
И еще, помните я говорил, что хороший ли это способ создания логера(журнала) ошибок, так вот можете на него ответить?) Может быть в сpp есть функция или еще что то, которая выводит ошибки или сохраняет их. Или может класс лучше переписать, что бы был более как бы так сказать быстрее что ли или проще)
На этот вопрос у меня ответа нет.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.02.2013, 19:36     Как передать ссылку на объект в класс #25
Цитата Сообщение от Helldrg Посмотреть сообщение
Или может класс лучше переписать, что бы был более как бы так сказать быстрее что ли или проще)
ну так ответь себе на вопросы:
что будет если программист пользователь твоего кода забудет ввызвать InitializeLog?
а если он(программист) захочет создать несколько логгеров?
а если он передаст объект логгера по значению, а не по ссылке?
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,078
23.02.2013, 00:05  [ТС]     Как передать ссылку на объект в класс #26
Цитата Сообщение от Jupiter Посмотреть сообщение
что будет если программист пользователь твоего кода забудет вызывать InitializeLog?
Ну я так подумал лучше открывать файл для записи только один раз и закрывать тоже только 1. Инитиалайз в самом начале поставил в мейне и все)
Цитата Сообщение от Jupiter Посмотреть сообщение
а если он передаст объект логгера по значению, а не по ссылке?
Вы имеете в виду, что нужно сделать проверку типов и значений параметров?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.02.2013, 03:33     Как передать ссылку на объект в класс #27
Цитата Сообщение от Helldrg Посмотреть сообщение
Ну я так подумал лучше открывать файл для записи только один раз и закрывать тоже только 1. Инитиалайз в самом начале поставил в мейне и все)
для инициализации существует конструктор
Цитата Сообщение от Helldrg Посмотреть сообщение
Вы имеете в виду, что нужно сделать проверку типов и значений параметров?
объекты потоков нельзя скопировать, и при попытке передать объект логгера по значению возникнет ошибка, но все же лучше явно запретить копирование логгера
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,078
23.02.2013, 15:14  [ТС]     Как передать ссылку на объект в класс #28
Цитата Сообщение от Jupiter Посмотреть сообщение
явно запретить копирование логгера
Это как?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.02.2013, 15:16     Как передать ссылку на объект в класс #29
Цитата Сообщение от Helldrg Посмотреть сообщение
Это как?
C++
1
2
3
private:
    LogClass(const LogClass&);
    LogClass& operator = (const LogClass&);
в с++11:
C++
1
2
3
private:
    LogClass(const LogClass&) = delete;
    LogClass& operator = (const LogClass&) = delete;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2013, 15:18     Как передать ссылку на объект в класс
Еще ссылки по теме:

C++ Как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С
C++ Как правильно передать объект fstream в функцию
C++ Как вернуть ссылку на объект?

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
23.02.2013, 15:18     Как передать ссылку на объект в класс #30
Цитата Сообщение от Jupiter Посмотреть сообщение
= delete;
что это значит???

Добавлено через 52 секунды
Цитата Сообщение от Jupiter Посмотреть сообщение
в с++11:
а.. не прочитал. Опять эти новые стандарты, которые не поймёшь зачем вводят.
Был язык Си. Нет, надо было испортить
Yandex
Объявления
23.02.2013, 15:18     Как передать ссылку на объект в класс
Ответ Создать тему
Опции темы

Текущее время: 16:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru