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

Как запретить вызов конструктора 2-ой раз - C++

Восстановить пароль Регистрация
 
Maratovich
13 / 17 / 1
Регистрация: 05.09.2012
Сообщений: 210
27.01.2013, 17:19     Как запретить вызов конструктора 2-ой раз #1
Как можно сделать чтобы конструктор не вызывался 2-раз

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
#include "Model.h"
 
 
 
int main()
{
    Model mod;
    mod.printPlayer();
 
    Model mod1;
    mod1.printPlayer();
    return 0;
}
здесь конструктор вызывается 2-ой раз
C++
1
Model mod1; mod1.printPlayer();
- но мне этого не нужно... Помогите пожалуйста...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2013, 17:19     Как запретить вызов конструктора 2-ой раз
Посмотрите здесь:

C++ Вызов конструктора классf!
вызов конструктора C++
вызов конструктора C++
C++ Повторный вызов конструктора?!
C++ Вызов конструктора копий
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,564
Записей в блоге: 17
27.01.2013, 17:23     Как запретить вызов конструктора 2-ой раз #2
Конструктор нельзя вызвать дважды по определению...

printPlayer() -метод а не конструктор насколько можно судить по коду.
Maratovich
13 / 17 / 1
Регистрация: 05.09.2012
Сообщений: 210
27.01.2013, 17:27  [ТС]     Как запретить вызов конструктора 2-ой раз #3
ну конструктор вызывается в тот момент когда я пишу
C++
1
Model mod1;
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
27.01.2013, 17:28     Как запретить вызов конструктора 2-ой раз #4
Singleton ???
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,564
Записей в блоге: 17
27.01.2013, 17:28     Как запретить вызов конструктора 2-ой раз #5
Цитата Сообщение от Maratovich Посмотреть сообщение
ну конструктор вызывается в тот момент когда я пишу
Ну и ??
Maratovich
13 / 17 / 1
Регистрация: 05.09.2012
Сообщений: 210
27.01.2013, 17:31  [ТС]     Как запретить вызов конструктора 2-ой раз #6
так получается когда я буду создавать новую переменную так опять будут новые данные ??

просто у меня в конструкторе выпадает случайное число и мне не нужно чтобы данные во время выполнения программы оно менялось...
может тогда что-нибудь посаветуете, что бы обойти этот момент ?

Добавлено через 15 секунд
так получается когда я буду создавать новую переменную так опять будут новые данные ??

просто у меня в конструкторе выпадает случайное число и мне не нужно чтобы во время выполнения программы оно менялось...
может тогда что-нибудь посаветуете, что бы обойти этот момент ?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
27.01.2013, 17:32     Как запретить вызов конструктора 2-ой раз #7
Maratovich, тебе нужно вызвать метод что ли, не создавая объекта?
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,564
Записей в блоге: 17
27.01.2013, 17:33     Как запретить вызов конструктора 2-ой раз #8
Что мешает необходимые данные объявить как static ?
Maratovich
13 / 17 / 1
Регистрация: 05.09.2012
Сообщений: 210
27.01.2013, 17:37  [ТС]     Как запретить вызов конструктора 2-ой раз #9
тогда мне все как static Объявлять ??
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,564
Записей в блоге: 17
27.01.2013, 17:39     Как запретить вызов конструктора 2-ой раз #10
Все зависит от того что в конечном счете рассчитываешь получить, возможно там вообще классы не нужны...
Maratovich
13 / 17 / 1
Регистрация: 05.09.2012
Сообщений: 210
27.01.2013, 17:50  [ТС]     Как запретить вызов конструктора 2-ой раз #11
а видит ли класс который унаследовал другой класс статические поля - имеет ли он к ним доступ ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2013, 17:54     Как запретить вызов конструктора 2-ой раз
Еще ссылки по теме:

C++ Вызов копирующего конструктора
C++ Вызов конструктора
C++ Неоднозначный вызов конструктора

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
27.01.2013, 17:54     Как запретить вызов конструктора 2-ой раз #12
Всё за нас придумали уже. Одна переменная на все объекты это static

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
 
class obj{
    public:
    obj() {
    }
    static int prev;
};
 
int obj::prev= 23;
 
int main(){
    obj a;
    printf ("%d\n", obj::prev);
    getchar ();
    return 0;
}
тут есть некоторое неудобство, на мой взгляд- мы вынуждены инициализировать переменную вне класса. Да ну и пусть так и будет, чё теперь поделать-то. Все другие способы (инициализировать переменную в методе или лепить глобальную переменную) так всё равно надо лепить ГЛОБАЛЬНУЮ переменную, как ни крути. Так пусть уж она будет static- то ест как бы "принадлежать" только этому классу.

Добавлено через 40 секунд
Цитата Сообщение от Maratovich Посмотреть сообщение
а видит ли класс который унаследовал другой класс статические поля - имеет ли он к ним доступ ?
а это, если сомневаешься, берёшь и проверяешь.
Yandex
Объявления
27.01.2013, 17:54     Как запретить вызов конструктора 2-ой раз
Ответ Создать тему
Опции темы

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