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

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

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

Ошибка при создании обьекта класса - C++

06.05.2016, 11:18. Просмотров 239. Ответов 6
Метки нет (Все метки)

Объясните пожалуйста почему нельзя создать обьект другого класса в private. В чем ошибка ?

Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Goods{
 
public:
 
    Goods(string, int );
 
};
 
class Buy{
 
private:
 
    Goods goods_in_storage("Storage.txt", 3); // error: expected identifier before string constant|
                                              // error: expected ',' or '...' before string constant|
public:
 
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2016, 11:18     Ошибка при создании обьекта класса
Посмотрите здесь:

Использование указателей при создании обьекта C++
C++ Ошибка в создании абстрактного класса
C++ Ошибка ввода строки следующего обьекта класса (C++)
Использование объекта одного класса при создании нового класса C++
Трудности при создании класса C++
Ошибка при создании шаблонного класса C++
Ошибка при создании класса библиотека: "'fflush' was not declared in this scope" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lawliet1
29 / 32 / 11
Регистрация: 30.09.2011
Сообщений: 202
Завершенные тесты: 1
06.05.2016, 11:29     Ошибка при создании обьекта класса #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
все поля внутри объекта инициализируются после создания объекта...

правильней переписать ваш код так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Goods
{
public:
    Goods(std::string, int);
};
 
class Buy
{
private:
    Goods goods_in_storage = Goods("storage.txt", 3);
 
public:
    Buy () = default;
};
тут используется внутриклассовая инициализация, если ваш компилятор не поддерживает 11 стандарт, то нужно переписать программу как-то так:
C++
1
2
3
4
5
6
7
8
9
class Buy
{
private:
    Goods goods_in_storage;
 
public:
    Buy (): goods_in_storage("storage.txt", 3)
    {  }
};
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
06.05.2016, 11:32  [ТС]     Ошибка при создании обьекта класса #3
Большое спасибо, за помощь
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
08.05.2016, 10:58  [ТС]     Ошибка при создании обьекта класса #4
Как можно грамотно инициализировать в производном классе объект другого класса ?

Вот код:

C++
1
2
3
4
5
6
7
class Goods{
 
public:
 
    Goods(std::string, int);
 
};
C++
1
2
3
4
5
6
7
8
9
10
11
class Shop{
 
private:
 
    Goods goods_in_storage;
 
public:
 
    Shop(): goods_in_storage(".txt", 3) {}
 
};
C++
1
2
3
4
5
6
7
class Storage : public Shop{
 
public:
 
    Storage(): Shop(): goods_in_storage("Storage.txt", characteristic_count) {}// ERROR
 
};
4AKE
29 / 29 / 12
Регистрация: 20.12.2010
Сообщений: 116
08.05.2016, 18:34     Ошибка при создании обьекта класса #5
C++
1
2
3
4
5
6
7
class Storage : public Shop {
 
public:
 
    Storage() : Shop() {}
 
};
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
08.05.2016, 21:29  [ТС]     Ошибка при создании обьекта класса #6
не не то, мне нужно чтобы storage передавал storage.txt вместо .txt, или как-то так
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2016, 21:35     Ошибка при создании обьекта класса
Еще ссылки по теме:

C++ Ошибка при создании класса
Ошибка в создании экземпляра класса C++
C++ Размер массива при создании экземпляра класса
C++ Ошибка при создании объекта класса
Ошибка "идентификатор не определен" при создании производного класса C++

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

Или воспользуйтесь поиском по форуму:
4AKE
29 / 29 / 12
Регистрация: 20.12.2010
Сообщений: 116
08.05.2016, 21:35     Ошибка при создании обьекта класса #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Bangemin,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Shop {
 
private:
 
    Goods goods_in_storage;
 
public:
 
    Shop() : goods_in_storage(".txt", 3) {}
    Shop(std::string s, int v): goods_in_storage(s,v) {}
 
};
 
class Storage : public Shop {
 
public:
 
    Storage() : Shop("Storage.txt", 999) {}
 
};
Yandex
Объявления
08.05.2016, 21:35     Ошибка при создании обьекта класса
Ответ Создать тему
Опции темы

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