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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lex0rg
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
#1

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

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

Есть два класса: 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2009, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужен совет по Статическим Обьектам (C++):

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

Нужен совет! - C++
Народ вот у меня вопрос если я прочитаю книгу "Программирование. Принцыпы и практика использования C++" и кое что не пойму то стоит ли...

Нужен совет! - C++
Доброго времени суток! Возможно таких тем как эта было уже миллион.. но всё же, хотелось бы услышать ваше мнение. Поставил перед...

Нужен совет! - C++
Как можно сделать что бы переменную произвольного типа объявленную в одной функции, можно было использовать во всех остальных(все остальные...

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

Нужен совет - C++
Вообщем написал программу, вкратце : сущ-ет класс человек, а классы менеджер, рабочий и ученый наследуют его св-ва. Нужно обратиться к...

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

При попытке:

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

selected = someCust;


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

Почему Я не могу этого сделать?
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
14.11.2009, 18:14 #9
Во-первых, какую ошибку выдаёт? Во-вторых, нельзя ли всё-таки поподробнее описать, что вы там делаете и зачем?
0
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 класс.

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

ЗЫ. Я пробовал ваш способ, но все без изменений
0
M128K145
Эксперт С++
8289 / 3509 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
14.11.2009, 19:20 #11
lex0rg, все исходники выкладываются в текстовом виде на форум. Все архивы прикрепляются к сообщениям в расширенном режиме.
0
Даемоник
42 / 42 / 3
Регистрация: 22.05.2009
Сообщений: 97
15.11.2009, 03:19 #12
lex0rg, почему-то мне кажется что
Цитата Сообщение от lex0rg Посмотреть сообщение
При попытке:
Customer someCust ("Name", "Address", "Number");
selected = someCust;
немного неправильно, поскольку перегруженной операции = я не заметил..
0
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;
}
Прикрепил исходник для удобства...
0
Вложения
Тип файла: rar ABC_Release_2.rar (636.3 Кб, 14 просмотров)
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 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 и пользуемся
этим именем.
1
lex0rg
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
15.11.2009, 20:36  [ТС] #15
Всё работает, спасибо.
Ты меня выручил.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2009, 20:36
Привет! Вот еще темы с ответами:

Нужен совет - C++
Всем добрый день. Кто нибудь может поделиться компилятором Турбо Си++ или каким нибудь другим ...? Или подсказать где можно...

нужен совет!!! - C++
блин скачала еле как этот си...dev c++....ввожу программу и нажимаю компелировать...он компелирует видимо и ничего не выдает...кроме того...

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

Нужен совет! - C++
Здравствуйте уважаемые! Подскажите пожалуйста книгу по С++ , чтобы в ней толком обьяснялось про такие детали, как к примеру _WIN32_WINDOWS...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
15.11.2009, 20:36
Ответ Создать тему
Опции темы

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