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

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

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

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

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

Ошибка при записи в файл данных из обьекта класса - C++
#include <iostream> #include <conio.h> #include <fstream> using namespace std; class Vector { public: double x; ...

Ошибка при создании класса - C++
написал класс:#include<windows.h> class Hook{ public: void SetHook(){ HINSTANCE hinstDLL = GetModuleHandle(NULL); if...

Ошибка при создании объекта класса - C++
Здравствуйте. В коде ниже при попытке вывести код на экран возникает следующая ошибка: prog.cpp: In function 'int main()': ...

Ошибка при создании шаблонного класса - C++
Всем привет!!!! пытаюсь реализовать паттерн итератор для двусвязного списка но до реализации пока не дошел потому что при компиляции код...

Ошибка при создании экземпляра класса - C++
На скринах показано, где ошибка Вот код: #include <iostream> #include <string> #include <iomanip> #include...

Использование указателей при создании обьекта - C++
Привет! Собственно вопрос в теме: когда для создания обьекта использовать указатели? Почему в qt и с++ builder используются именно...

6
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)
    {  }
};
1
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
06.05.2016, 11:32  [ТС] #3
Большое спасибо, за помощь
0
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
 
};
0
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() {}
 
};
0
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
08.05.2016, 21:29  [ТС] #6
не не то, мне нужно чтобы storage передавал storage.txt вместо .txt, или как-то так
0
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) {}
 
};
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2016, 21:35
Привет! Вот еще темы с ответами:

Ошибка ввода строки следующего обьекта класса (C++) - C++
Добрый вечер всем! Проблема в том, что после ввода строки обьекта базового класса в следующим производном нету возможности для его...

Ошибка "идентификатор не определен" при создании производного класса - C++
всем доброго времени суток. пытаюсь создать производный класс для machine, в котором нужно вывести всё, что ввёл, но компилятор почему-то...

Ошибка при создании класса библиотека: "'fflush' was not declared in this scope" - C++
Доброго времени суток. Подскажите пожалуйста почему выдает ошибку? Вот задание: Вот сам код #include <iostream> #include...

Использование объекта одного класса при создании нового класса - C++
Добрый вечер. У меня такая проблема. Есть готовый класс L2 - список, на его основе нужно создать дек. Я поступил так: в приватной части...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
08.05.2016, 21:35
Ответ Создать тему
Опции темы

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