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

Конструктор и деструктор анонимного класса - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
23.03.2014, 21:04     Конструктор и деструктор анонимного класса #1
Здравствуйте. Есть ли в С++ такая возможность? Очень нужна именно такая реализация класса, но если это невозможно, буду думать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
23.03.2014, 21:30     Конструктор и деструктор анонимного класса #2
Возможности такой нет.

Retyrn0, будет проще тебе помочь, если ты расскажешь про свою задачу.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
23.03.2014, 22:05  [ТС]     Конструктор и деструктор анонимного класса #3
Цитата Сообщение от DrOffset Посмотреть сообщение
будет проще тебе помочь, если ты расскажешь про свою задачу.
Класс с единственным экземпляром WORLD - поэтому удобнее пользовать анонимный класс, кроме того нужно исключить возможность создания других экземпляров - это не критичное требование, но объявление нового экземпляра не имеете никакого смысла, потому что весь функционал библиотеки привязан к имени основного экземпляра. Раз возможности реализовать конструктор и деструктор анонимного класса нет, буду использовать именованный. Спасибо за помощь!

Добавлено через 1 минуту
Ещё подумываю над реализацией без ООП, хотя это менее понятно интуитивно...
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
23.03.2014, 22:06     Конструктор и деструктор анонимного класса #4
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Класс с единственным экземпляром WORLD
Это синглтон.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
23.03.2014, 22:22  [ТС]     Конструктор и деструктор анонимного класса #5
Цитата Сообщение от DrOffset Посмотреть сообщение
Это синглтон.
Спасибо, идея не плохая, но думаю, проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 11:00     Конструктор и деструктор анонимного класса #6
Цитата Сообщение от Retyrn0 Посмотреть сообщение
проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы.
то же самое ведь, что и синглетон
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.03.2014, 11:02     Конструктор и деструктор анонимного класса #7
Цитата Сообщение от Retyrn0 Посмотреть сообщение
проще создать методы-аналоги конструктора-деструктора и вызывать их непосредственно при старте и завершении программы
Деструктор вызывается автоматически, так что альтернатива в виде ручного вызова не проще.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
24.03.2014, 13:42  [ТС]     Конструктор и деструктор анонимного класса #8
Цитата Сообщение от 0x10 Посмотреть сообщение
Деструктор вызывается автоматически, так что альтернатива в виде ручного вызова не проще.
Единственный экземпляр класса создаётся и уничтожается единожды - вместо автоматических конструкторов и деструкторов мне придётся дописать 2 строки кода вызова метода в начале и в конце программы. Создать другой экземпляр анонимного класса - штука "затруднительная", так что мои потребности покрываются в полной мере. Чем это сложнее синглтонов? Мне даже придумывать имя классу не придётся)

Добавлено через 3 минуты
Цитата Сообщение от aLarman Посмотреть сообщение
то же самое ведь, что и синглетон
По реализациям, которые я видел, у синглтона есть имя класса, мой анонимный. По самому определению, скорее Вы правы - мой класс ведёт себя аналогично, но именно такой реализации синглтона я не видел - поэтому не знаю. Это вопрос формулировок.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 13:46     Конструктор и деструктор анонимного класса #9
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Мне даже придумывать имя классу не придётся)
это как? О_О
хочу увидеть Вашу реализацию
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
24.03.2014, 13:57     Конструктор и деструктор анонимного класса #10
Цитата Сообщение от aLarman Посмотреть сообщение
это как?
C++
1
class {...} foo;
наверное.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.03.2014, 13:59     Конструктор и деструктор анонимного класса #11
Что не запрещает создать несколько объектов)
C++
1
class {...} foo, bar, baz;
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
24.03.2014, 14:04  [ТС]     Конструктор и деструктор анонимного класса #12
Цитата Сообщение от aLarman Посмотреть сообщение
это как? О_О
хочу увидеть Вашу реализацию
C++
1
2
3
4
5
6
7
class
{
public:
    init(){}
    release(){}
}
WORLD;
При старте программы -
C++
1
WORLD.init();
При завершении -
C++
1
WORLD.release;
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 14:06     Конструктор и деструктор анонимного класса #13
а смысл методов init и release если класс есть глобальная переменная которая и без того создается и удаляется 1 раз
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
24.03.2014, 14:07  [ТС]     Конструктор и деструктор анонимного класса #14
Цитата Сообщение от 0x10 Посмотреть сообщение
Что не запрещает создать несколько объектов
Динамически добавлять как? Класс библиотечный и по задумке саму библиотеку менять нельзя...например, Вы же не меняете стандартные библиотеки - это беспантово)
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.03.2014, 14:17     Конструктор и деструктор анонимного класса #15
Ой, я ж теперь могу ссылаться на официальный FAQ: http://isocpp.org/wiki/faq/coding-standards#global-vars

Добавлено через 3 минуты
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Класс библиотечный
Ок, и как такой библиотекой пользоваться?
Чтобы обращаться к методам WORLD, нужно его объявление. В данном случае объявление и определение невозможно разделить. Подключаем в два разных файла - и выхватываем ошибку линковки, потому что в двух единицах трансляции появляются глобальные объекты с одинаковыми именами.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
24.03.2014, 14:50  [ТС]     Конструктор и деструктор анонимного класса #16
Цитата Сообщение от 0x10 Посмотреть сообщение
Подключаем в два разных файла
Не понял что подключаем? Библиотеку? - Для этого есть препроцессор.

Добавлено через 6 минут
Получается, что объект WORLD глобальный, а вот создать такой же объект не из библиотеки не получиться - класс анонимный - как раз то, что мне нужно. В библиотеке есть класс и функции инициализации всего и освобождения. Т.е. при использовании библиотеки нужно подключить её, запустить Init() и по завершении запустить Release(). А всё необходимое сделает сама библиотека.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.03.2014, 15:01     Конструктор и деструктор анонимного класса #17
А проверьте-ка у себя такой пример.
Библиотека:
C++
1
2
3
4
5
6
7
// File World.h
#pragma once
 
class {
public:
    int n;
} WORLD;
Программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// File main.cpp
#include "World.h"
 
#include <iostream>
 
void g();
 
int main()
{
    WORLD.n = 10;
    std::cout << "main: " << WORLD.n << std::endl;
    g();
}
C++
1
2
3
4
5
6
7
8
9
// File app.cpp
#include "World.h"
 
#include <iostream>
 
void g()
{
    std::cout << "app: " << WORLD.n << std::endl;
}
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
24.03.2014, 15:54  [ТС]     Конструктор и деструктор анонимного класса #18
Цитата Сообщение от 0x10 Посмотреть сообщение
А проверьте-ка у себя такой пример.
Я намёк понял, но я использую единственный .cpp, а c множеством .h всё работает как надо.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.03.2014, 15:55     Конструктор и деструктор анонимного класса #19
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Я намёк понял, но я использую единственный .cpp
Это частный случай, и полагаться на то, что так будет и дальше - не стоит.

Решение некорректно. Больше тут нечего говорить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 16:12     Конструктор и деструктор анонимного класса
Еще ссылки по теме:

C++ При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
Для класса задать конструктор и деструктор C++
C++ Нужно ли прописывать конструктор и деструктор для чисто виртуального абстрактного класса

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

Или воспользуйтесь поиском по форуму:
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
24.03.2014, 16:12  [ТС]     Конструктор и деструктор анонимного класса #20
Цитата Сообщение от 0x10 Посмотреть сообщение
Это частный случай
Иных случаев не предвидится.
Если мне взбредёт в голову осуществить общедоступную реализацию, обязательно воспользуюсь советами, но пока я пишу библиотеку для себя, и мне одного срр более чем достаточно.

Вопрос был о конструкторе и деструкторе анонимного класса - я понял, они в с++ невозможны.
Спасибо огромное за ответы!
Yandex
Объявления
24.03.2014, 16:12     Конструктор и деструктор анонимного класса
Ответ Создать тему
Опции темы

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