Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231

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

20.02.2013, 00:39. Показов 8454. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста, почему не работает:
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");
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2013, 00:39
Ответы с готовыми решениями:

Как передать ссылку на объект в функцию
Есть два класса допустим Entitit и Map, в Map есть переменная допустим Time которая изменяется каждую секунду на +1, требуется передать...

Как в порождаемый класс передать ссылку на основной класс?
Основной класс: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "mypaint.h" namespace Ui { ...

Как в пользовательский тэг передать ссылку на объект созданный в скриплете?
В jsp, в скриплете создается объект. Можно ли его как-то передать в пользовательский тэг и там обработать этот объект (обратиться к его...

29
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
22.02.2013, 16:10
Студворк — интернет-сервис помощи студентам
ITcrusader,
C++
1
2
3
4
5
6
7
#pragma once
#ifndef HEADER_H
#define HEADER_H
 
// тут все содержимое заголовочного файла...
 
#endif
Ну уж либо одно, либо другое.
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 16:46
Цитата Сообщение от Helldrg Посмотреть сообщение
Вы имеете ввиду реализацию класса в .сpp делать а прототипы в .h?
Да. Кроме шаблонов.
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
22.02.2013, 19:08  [ТС]
Ну это хорошо я всегда так пишу))
А если шаблоны писать в классе то потом ошибки не будет?(Это просто так еще раз уточнить)
И еще, помните я говорил, что хороший ли это способ создания логера(журнала) ошибок, так вот можете на него ответить?) Может быть в сpp есть функция или еще что то, которая выводит ошибки или сохраняет их. Или может класс лучше переписать, что бы был более как бы так сказать быстрее что ли или проще)
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 19:28
Цитата Сообщение от Helldrg Посмотреть сообщение
А если шаблоны писать в классе то потом ошибки не будет?
Прототип шаблона и его реализация должны быть в одном файле(но не специализация).
Цитата Сообщение от Helldrg Посмотреть сообщение
И еще, помните я говорил, что хороший ли это способ создания логера(журнала) ошибок, так вот можете на него ответить?) Может быть в сpp есть функция или еще что то, которая выводит ошибки или сохраняет их. Или может класс лучше переписать, что бы был более как бы так сказать быстрее что ли или проще)
На этот вопрос у меня ответа нет.
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.02.2013, 19:36
Цитата Сообщение от Helldrg Посмотреть сообщение
Или может класс лучше переписать, что бы был более как бы так сказать быстрее что ли или проще)
ну так ответь себе на вопросы:
что будет если программист пользователь твоего кода забудет ввызвать InitializeLog?
а если он(программист) захочет создать несколько логгеров?
а если он передаст объект логгера по значению, а не по ссылке?
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
23.02.2013, 00:05  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
что будет если программист пользователь твоего кода забудет вызывать InitializeLog?
Ну я так подумал лучше открывать файл для записи только один раз и закрывать тоже только 1. Инитиалайз в самом начале поставил в мейне и все)
Цитата Сообщение от Jupiter Посмотреть сообщение
а если он передаст объект логгера по значению, а не по ссылке?
Вы имеете в виду, что нужно сделать проверку типов и значений параметров?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
23.02.2013, 03:33
Цитата Сообщение от Helldrg Посмотреть сообщение
Ну я так подумал лучше открывать файл для записи только один раз и закрывать тоже только 1. Инитиалайз в самом начале поставил в мейне и все)
для инициализации существует конструктор
Цитата Сообщение от Helldrg Посмотреть сообщение
Вы имеете в виду, что нужно сделать проверку типов и значений параметров?
объекты потоков нельзя скопировать, и при попытке передать объект логгера по значению возникнет ошибка, но все же лучше явно запретить копирование логгера
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
23.02.2013, 15:14  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
явно запретить копирование логгера
Это как?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
23.02.2013, 15:16
Цитата Сообщение от 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;
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
23.02.2013, 15:18
Цитата Сообщение от Jupiter Посмотреть сообщение
= delete;
что это значит???

Добавлено через 52 секунды
Цитата Сообщение от Jupiter Посмотреть сообщение
в с++11:
а.. не прочитал. Опять эти новые стандарты, которые не поймёшь зачем вводят.
Был язык Си. Нет, надо было испортить
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2013, 15:18
Помогаю со студенческими работами здесь

Как передать ссылку по клику в другой класс?
как передать ссылку по клику в другой класс есть класс парсера вот часть кода protected InputStream getInputStream() { ...

Как правильно передать ссылку в другой класс
Добрый день! Есть класс class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet...

Как из main передать объект в класс
В классе main я создал объект класса Company public class Main { public static void main(String args) { Company...

Как передать массив в функцию и класс в объект?
Задача- треугольники у нас, заданы точками которые классы. Надо создать массив из них и вычислить какие из них какого вида и найти маx и...

Как передать объект с формы на форму (из класса в класс)?
Всем привет. Сижу мучаюсь, сейчас пойду в книжках ответ искать. На форме 1 по клику открывается, через диалог, форма 2. На форме 2...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru