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

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

Войти
Регистрация
Восстановить пароль
 
lex0rg
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 13:19     Нужен совет по Статическим Обьектам #1
Есть два класса: 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

Как это решить? Мне нужно что бы все классы могли править этот обьект.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2009, 13:19     Нужен совет по Статическим Обьектам
Посмотрите здесь:

C++ Нужен совет в программе!
нужен совет Proff C++
C++ Нужен совет по проге.
C++ нужен совет по выводу
Процессы нужен совет C++
Массивы (нужен совет) C++
Нужен хороший совет! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User1990
26 / 26 / 2
Регистрация: 03.11.2009
Сообщений: 158
14.11.2009, 13:53     Нужен совет по Статическим Обьектам #2
Цитата Сообщение от lex0rg Посмотреть сообщение
Customer(string, string, string);
попробуй переобозначить другим именем
lex0rg
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 13:59  [ТС]     Нужен совет по Статическим Обьектам #3
Цитата Сообщение от User1990 Посмотреть сообщение
попробуй переобозначить другим именем
Ты имеешь ввиду переименновать крнструктор? Я не совсем понял... Дай пример, пжл.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
14.11.2009, 14:38     Нужен совет по Статическим Обьектам #4
Вложенный класс пробовали или вам надо именно static?
lex0rg
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 14:43  [ТС]     Нужен совет по Статическим Обьектам #5
Желательно статик.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
14.11.2009, 14:46     Нужен совет по Статическим Обьектам #6
задаете объект глобально статически после библиотек и он должен быть виден
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
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");
lex0rg
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 15:05  [ТС]     Нужен совет по Статическим Обьектам #8
Сделал как вы посоветовали...

При попытке:

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

selected = someCust;


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

Почему Я не могу этого сделать?
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
14.11.2009, 18:14     Нужен совет по Статическим Обьектам #9
Во-первых, какую ошибку выдаёт? Во-вторых, нельзя ли всё-таки поподробнее описать, что вы там делаете и зачем?
lex0rg
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/30692411...ase_2.rar.html
ABC это Main класс.

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

ЗЫ. Я пробовал ваш способ, но все без изменений
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
14.11.2009, 19:20     Нужен совет по Статическим Обьектам #11
lex0rg, все исходники выкладываются в текстовом виде на форум. Все архивы прикрепляются к сообщениям в расширенном режиме.
Даемоник
 Аватар для Даемоник
41 / 41 / 3
Регистрация: 22.05.2009
Сообщений: 97
15.11.2009, 03:19     Нужен совет по Статическим Обьектам #12
lex0rg, почему-то мне кажется что
Цитата Сообщение от lex0rg Посмотреть сообщение
При попытке:
Customer someCust ("Name", "Address", "Number");
selected = someCust;
немного неправильно, поскольку перегруженной операции = я не заметил..
lex0rg
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 Кб, 14 просмотров)
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
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 и пользуемся
этим именем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2009, 20:36     Нужен совет по Статическим Обьектам
Еще ссылки по теме:

Нужен совет программистов C++
Нужен совет по программе C++
Нужен совет fread C++
Нужен совет начинающему программисту C++
Нужен совет по дальнейшему обучению C++

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

Или воспользуйтесь поиском по форуму:
lex0rg
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
15.11.2009, 20:36  [ТС]     Нужен совет по Статическим Обьектам #15
Всё работает, спасибо.
Ты меня выручил.
Yandex
Объявления
15.11.2009, 20:36     Нужен совет по Статическим Обьектам
Ответ Создать тему
Опции темы

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