Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
1

Как созадть такой экземпляр?

07.04.2011, 09:10. Показов 2451. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пусть есть класс:
C++
1
2
3
4
5
6
class A
{
 protected:
  type field;
....
};
а выше описан тип (возможно класс, или структура) type, или макрос type - синоним существующего (возможно стандартного) типа. В классе нет открытых членов, прямо, или косвенно пишуших член field. Как создать экземпляр класса A с определённым значением члена field?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2011, 09:10
Ответы с готовыми решениями:

как вам такой ноут...стоит брать такой? или посоветуете другой?
http://www.microsoft.com/rus/windows/pc-shop/computer.aspx?id=162

Как сделать такой Одностраничный сайт со скроллом(ну или просто такой скролл)
Как сделать такой "Одностраничный" сайт cо скроллом (ну или просто такой скролл) ? Увидел...

Как делать такой примерно такой сайт 89.14 .489.41
много форумах видел но не знал как делать

Создать экземпляр одного класса в Main, и передать его в экземпляр другого класса
Добрый день. Подскажите пожалуйста. есть несколько классов-файлов в одном пакете. class one...

29
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
07.04.2011, 10:56 2
C++
1
2
3
4
5
6
7
8
class A
{
protected:
    type field;
 
public:
    A(type _f): field(_f) {};
};
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
07.04.2011, 15:01 3
Унаследовать от него класс B, который будет настраивать field.)
И использовать через указатель на А.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.04.2011, 12:33  [ТС] 4
А наследник будет иметь методы методы, записывающие данное поле? Не пойдёт.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.04.2011, 14:40 5
Конструктор тебя точно не устраивает?
Тогда, можно дружественную функцию сделать.

А это праздный интерес или реально такая проблема возникла?
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
13.04.2011, 21:38 6
Наверное, никак. Действительно, ты все конструкторы определяешь сам, а которые не определяешь, те обнуляют все поля.
А конструкторы использовать нельзя, ибо они открыты. Тупик.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
13.04.2011, 22:40 7
kravam, Нифига они не обнуляют по крайней мере ПОД-ы.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
13.04.2011, 22:55 8
А ну да я перепутал, это такой обнуляет
C++
1
konstruktor () {};
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
13.04.2011, 23:13 9
а зачем нужен класс к которому не достучаться???

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
Как создать экземпляр класса A с определённым значением члена field?
создай константу
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
13.04.2011, 23:46 10
kravam, Я так понимаю ты опять перепутал, да?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
class some_c
{
public:
    some_c() { }
    int getT() const {return t;}
private:
    int t;
};
 
int main()
{
    some_c s;
    std::cout<<s.getT()<<'\n';
}
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
13.04.2011, 23:53 11
"Поведение конструктора по умолчанию, добавляемого компилятором, заключается в установке всех данных-членов в ноль"

Брайан Оверленд, "С++ без страха", издательство "Триумф", Москва, 2005.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
14.04.2011, 00:13 12
kravam, цитировать авторитетов, это, конечно, хорошо, но всё же верить своим глазам как-то привычнее. А они сообщают мозгу следующую информацию:
При использовании конструктора, сгенерированного компилятором, в переменных содержится мусор.
По крайней мере MSVC и gcc поступают именно так.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.04.2011, 06:20  [ТС] 13
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тогда, можно дружественную функцию сделать.
Без друзей.
Цитата Сообщение от Deviaphan Посмотреть сообщение
Конструктор тебя точно не устраивает?
Только если можно ограничить число его применний. А в саммом классе никак нельзя прописать создание экземпляра? Что нибудбь типа
C++
1
2
3
4
5
6
class A
{
 static A o;
 ...
};
...
?

Добавлено через 4 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
а зачем нужен класс к которому не достучаться???
Кто сказал,ч то к нему нельзя достучаться? Методы, читающее упомянутое поле, будут обязательно, а не будет методов, пишуших это же поле.
Цитата Сообщение от ValeryS Посмотреть сообщение
создай константу
Как?

Добавлено через 15 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а зачем нужен класс к которому не достучаться???
Кто сказал,ч то к нему нельзя достучаться? Методы, читающее упомянутое поле, будут обязательно, а не будет методов, пишуших это же поле.
Цитата Сообщение от ValeryS Посмотреть сообщение
создай константу
Как? Причём, нужна не итовая, например, константа, а именно константный объект.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 07:03 14
Цитата Сообщение от kravam Посмотреть сообщение
это такой обнуляет
В дебаге обнуляет, да. Но только в дебаге. В релизе никакой лишней работы без спросу не выполняется.

Добавлено через 4 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Только если можно ограничить число его применний.
Т.е. это синглтон с неожиданными требованиями?
Не совсем понятна природа данных ограничений. Точнее, совсем не понятна.

Вот зря не хочешь с наследованием делать. Можно было бы два интерфейс сделать. оДин на чтение, второй для записи. И повсеместно использовать только читающий интерфейс.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.04.2011, 07:05  [ТС] 15
Цитата Сообщение от Deviaphan Посмотреть сообщение
В дебаге обнуляет, да. Но только в дебаге. В релизе никакой лишней работы без спросу не выполняется.
Кто сказал, что она лишняя? Отладил ты в дебаге, потом слепил релиз, а из-за того, что релизный конструктор не обнуляет, полезли глюки, но отладочной инфы уже нет и фиг ты найдёшь, откуда глюки. Вывод: дебаг негоден для дебага. Всё относящееся к явно объявленным и явно читаемым данным должно совпадать, лишенй эта работа не будет, иначе это не дебаг. Различаются же эти версии тем, что в релизе нет отладочной инфы, из-за чего дебагеры не могут наблюдать его исполнение. Кстати, я вообще избегаю дефолтных конструкторов. Не доверяю им и именно из-за незнания их поведения в отношении полей объекта. Но если нет указателей, то деструкторы у меня дефолтные.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 07:09 16
Цитата Сообщение от taras atavin Посмотреть сообщение
Кто сказал, что она лишняя?
Если программист не стал инициализировать переменную, значит, инициализация не нужна. Соответственно, неявная инициализация - лишняя работа.
Я бы и в дебаге обнуление отключил, если бы знал как.) С другой стороны, RAII эту проблему устраняет, так что пофиг.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.04.2011, 07:13  [ТС] 17
Цитата Сообщение от Deviaphan Посмотреть сообщение
Т.е. это синглтон с неожиданными требованиями?
Не совсем понятна природа данных ограничений. Точнее, совсем не понятна.
Есть два конструткора, оба с параметрами, один я вызову сам и полнсотью исчерпаю его разрешенные вызовы, а второй будет подробно прокомментирован и доступен для неограниченного использования.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 07:18 18
Т.е. ты хочешь быть уверен, что первый конструктор будет вызван только один раз и до взовов второго конструктора, так?
0
silent_1991
14.04.2011, 07:57
  #19

Не по теме:

Цитата Сообщение от 'Deviaphan' Посмотреть сообщение
В дебаге обнуляет
У меня в 10-й студии и там не обнуляет...

0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.04.2011, 08:26  [ТС] 20
Цитата Сообщение от Deviaphan Посмотреть сообщение
Т.е. ты хочешь быть уверен, что первый конструктор будет вызван только один раз и до взовов второго конструктора, так?
Я ещё посмотрю, ровно 1, или ровно 16. Но все 16 раз я его вызову сам.

Добавлено через 5 минут
Обавзательный объект должен:
1 быть контантным,
2 занимать место в памяти,
3 иметь глобальное имя,
4 быть объявлен только в моём исходнике без возможности повтороной декларации с тем же конструктором.
Как это сделать?
0
14.04.2011, 08:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2011, 08:26
Помогаю со студенческими работами здесь

Для чего делать ТАКОЙ объем видеопамяти при ТАКОЙ разрядности?
Не понимаю, зачем нужно 4 гига пямяти при разрядности шины в 128 бит? (например GForce 550 GTX...

Чего Английский такой нудный, нафиг он нужен такой синтаксис?
Вот, у них конкурсы проходят в школах, кто знает как писАть слово. Их имена уже достали со своим...

Как передать экземпляр класса?
Здравствуйте. Для работы с определенной платой АЦП (есть оригинальная библиотека на С++ и ее...

как создать экземпляр ui->TabWidget?
Добрый день.Захотелось мне, чтобы программа при открытии файла создавала вкладку новую для него.И...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru