Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
1

Нужен совет по Статическим Обьектам

14.11.2009, 13:19. Показов 1127. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть два класса: Main и Customer

Customer состоит из
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Customer
{
private:
    string name;        // name of the customer
    string address;     // address of the customer
    string phNumber;    // phone number of the customer
public:
    string getName();
    string getAddress();
    string getPhNumber();
    Customer(string, string, string);
    Customer();
    ~Customer();
};
Мне нужен статический обьект который будет доступен для всех остальных классов.
Я его могу создать(в Мэин.хпп ):
C++
1
static Customer selected;
(в Мэин.спп ):
C++
1
 Customer Маin::selected ("Alex", "King St", "555-55-55");
Но когда я пытаюсь в него скопировать другой обьект я получаю ошибку:

expected constructor, destructor, or type conversion before '=' token
expected `,' or `;' before '=' token

Как это решить? Мне нужно что бы все классы могли править этот обьект.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2009, 13:19
Ответы с готовыми решениями:

Книга по Com-обьектам
Подскажите пожалуйста толковую книгу по сом технологиям на русском языке

Нужен совет
занимаюсь сайтами сам, заказали раскрутку по словам сайт визитка 1171 заказ сайта 1556 заказать...

Совет нужен!
Добрый день!! Искал по инету готовый модль для проведения тестирования сотрудников. так и не...

Нужен совет:
я учусь в 2-ом курсе на программиста у меня есть базовые знание c++,STL до сих пор работал...

14
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
14.11.2009, 13:53 2
Цитата Сообщение от lex0rg Посмотреть сообщение
Customer(string, string, string);
попробуй переобозначить другим именем
0
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 13:59  [ТС] 3
Цитата Сообщение от User1990 Посмотреть сообщение
попробуй переобозначить другим именем
Ты имеешь ввиду переименновать крнструктор? Я не совсем понял... Дай пример, пжл.
0
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
14.11.2009, 14:38 4
Вложенный класс пробовали или вам надо именно static?
0
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 14:43  [ТС] 5
Желательно статик.
0
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
14.11.2009, 14:46 6
задаете объект глобально статически после библиотек и он должен быть виден
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
14.11.2009, 14:50 7
Статический объект виден только в той единице трансляции, в которой объявлен. Если написать в main.hpp строчку
C++
1
static Customer selected;
, то в каждом .cpp-файле, включающем main.hpp будет создан свой собственный объект selected с конструктором по умолчанию.
Объявление в main.cpp слегка непонятно: что такое Main? Если пространство имён, объявленное в main.hpp и в котором объявлен и selected, то здесь имеется попытка вторичного создания данного идентификатора.
Вероятно, ты хотел написать в main.hpp
C++
1
extern Customer selected;
и в main.cpp
C++
1
Customer selected("Alex", "King St", "555-55-55");
0
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 15:05  [ТС] 8
Сделал как вы посоветовали...

При попытке:

Customer someCust ("Name", "Address", "Number");

selected = someCust;


Выдает ту же ошибку.

Почему Я не могу этого сделать?
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
14.11.2009, 18:14 9
Во-первых, какую ошибку выдаёт? Во-вторых, нельзя ли всё-таки поподробнее описать, что вы там делаете и зачем?
0
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 18:40  [ТС] 10
Мне нужно сделать обьект Customer доступным для всех классов(глобальным статическим?).

Он создается, но если я пытаюсь в него скопировать другой Customer обьект -

Customer someCust ("Name", "Address", "Number");

selected = someCust;

я получаю ошибку:

expected constructor, destructor, or type conversion before '=' token
expected `,' or `;' before '=' token

Вот исходник: http://rapidshare.com/files/30... 2.rar.html
ABC это Main класс.

Буду очень благодарен.

ЗЫ. Я пробовал ваш способ, но все без изменений
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.11.2009, 19:20 11
lex0rg, все исходники выкладываются в текстовом виде на форум. Все архивы прикрепляются к сообщениям в расширенном режиме.
0
42 / 42 / 8
Регистрация: 22.05.2009
Сообщений: 97
15.11.2009, 03:19 12
lex0rg, почему-то мне кажется что
Цитата Сообщение от lex0rg Посмотреть сообщение
При попытке:
Customer someCust ("Name", "Address", "Number");
selected = someCust;
немного неправильно, поскольку перегруженной операции = я не заметил..
0
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
15.11.2009, 06:32  [ТС] 13
Оператор = есть, просто был закоментирован - для компиляции...

Но с ним всё та же ошибка... expected constructor, destructor, or type conversion before '=' token

Он выглядит так:
C++
1
2
3
4
5
6
7
Customer& Customer::operator=(Customer &a)
{
    name = a.name;
    address = a.address;
    phNumber = a.phNumber;
    return *this;
}
Прикрепил исходник для удобства...
Вложения
Тип файла: rar ABC_Release_2.rar (636.3 Кб, 15 просмотров)
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
15.11.2009, 18:23 14
Ладно, попробую объяснить ещё разик. Глобальный объект делается так:
а) Создаём и конструируем сам объект в одном из .cpp-файлов:
C++
1
MyType globalObject(arg1, arg2);
б) создаём заголовок, скажем, globals.h
Там объявляем этот объект как extern (т.е. не создаём объект, а просто говорим, что где-то такой объект будет):
C++
1
extern MyType globalObject;
в) Включаем globals.h во все .cpp-файлы, в которых нам нужен доступ к globalObject и пользуемся
этим именем.
1
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
15.11.2009, 20:36  [ТС] 15
Всё работает, спасибо.
Ты меня выручил.
0
15.11.2009, 20:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2009, 20:36
Помогаю со студенческими работами здесь

Нужен совет
Всем привет. Подскажите,пожалуйста, мне нужно найти какой то пакет для создания интерактивных...

Нужен совет
Добрый час! Нужна такая функция на телефоне . Когда кто нибудь звонил мне на телефон ,...

Нужен совет
Подскажите пожалуйста прогон по 3000 доскам может привести подьему тица на 150 в данный момент тиц...

Нужен совет
Хочу начать изучать С++. Посоветуйте какие-нибудь книги или самоучители. Учить буду с нуля. До...


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

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