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

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

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

Класс содержит более одного конструктора по умолчанию - C++

18.07.2014, 21:54. Просмотров 851. Ответов 1
Метки нет (Все метки)

Имеется класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class ControlObject
{
private:
    string productsFilename;
    ofstream fout;
    ifstream fin;
    bool isOpenFile;
    bool isEmptyFile;
public:
    ControlObject();
    ControlObject(const string& nm = FILENAME_PRODUCTS);
    bool addObject(Food obj);
    Food findObject(const std::string& name);
    bool isFileEmpty();
};
Отдельно даю определения других методов и конструкторов ( в этом же файле ).
При создании экземпляра класса жалуется на то, что класс имеет больше одного конструктора по умолчанию. Но если добавить скобки - предупреждение убирается. Появилось после установки MSVS 2013.

C++
1
2
ControlObject a; // предупреждение
ControlObject b(); // предупреждения нет
Вот вывод при компиляции:

1>d:\dropbox\c++\c++\test\test\исходный код.cpp(44): warning C4520: ControlObject: заданы несколько конструкторов, используемых по умолчанию
1>d:\dropbox\c++\c++\test\test\исходный код.cpp(55): error C2572: ControlObject::ControlObject: переопределение параметра по умолчанию: параметр 1
1> d:\dropbox\c++\c++\test\test\исходный код.cpp(40): см. объявление "ControlObject::ControlObject"
1>d:\dropbox\c++\c++\test\test\исходный код.cpp(87): warning C4018: <: несоответствие типов со знаком и без знака


И встречный вопрос, возможно связанный с темой: если я записываю определения конструкторов за пределами класса, выводиться предупреждение о том, что конструктор уже объявлен, хотя я пишу определение. В чем проблема? Подскажите пожалуйста.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2014, 21:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс содержит более одного конструктора по умолчанию (C++):

Класс содержит более одного конструктора по умолчанию - C++
Есть класс Abonent Как мне создать массив объектов с контруктором по умолчанию? я делаю так Abonent ab;// этой же строчкой...

Класс-шаблон создание конструктора по умолчанию - C++
Хочу создать класс-шаблон. Начал с создания конструктора по умолчанию, с этого же момента и началась проблема, причём такая, что смысл её...

Инициализация конструктора по умолчанию - C++
почему если инициализировать поля класса в конструкторе по умолчанию так: MyClass::MyClass() { int m=0; int t=0; } то поля...

Нет подходящего конструктора по умолчанию - C++
Всем привет :) Есть вот такой код#include &lt;vector&gt; #include &lt;SFML/Graphics.hpp&gt; using namespace sf; class Animation { public:...

Нет подходящего конструктора по умолчанию - C++
#ifndef ANIMATION_H #define ANIMATION_H #include &lt;SFML\Graphics.hpp&gt; class animation { public: std::vector&lt;sf::IntRect&gt;...

Ошибка: нет подходящего конструктора по умолчанию - C++
В общем ребят, такая проблема, решил начать обучение плюсов по книжке, там задание создать класс и конструктор с параметром, и в общем суть...

1
Kastaneda
Нарушитель
Эксперт С++
4664 / 2870 / 229
Регистрация: 12.12.2009
Сообщений: 7,299
Записей в блоге: 2
Завершенные тесты: 1
18.07.2014, 21:58 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
    ControlObject();
    ControlObject(const string& nm = FILENAME_PRODUCTS);
оба конструктора могут быть вызваны без параметров, поэтому
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
класс имеет больше одного конструктора по умолчанию
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
ControlObject a; // предупреждение
ControlObject b(); // предупреждения нет
1-ая строка - создание объекта (поэтому предупреждение), 2-ая строка - прототип ф-ции, которая называется b и возвращает ControlObject

Добавлено через 38 секунд
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
если я записываю определения конструкторов за пределами класса, выводиться предупреждение о том, что конструктор уже объявлен, хотя я пишу определение. В чем проблема?
нужен код.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2014, 21:58
Привет! Вот еще темы с ответами:

Для класса не существует конструктора по умолчанию - C++
Employe.h #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; using std::string; using std::cout; using std::cin; ...

Нет подходящего конструктора по умолчанию. Наследование - C++
Скидываю хидер и исходник к нему: хидер(Main_Menu.h): #include &quot;stdafx.h&quot; #ifndef MAIN_MENU_DEF #define MAIN_MENU_DEF 1 ...

Конструктор по умолчанию вызывается после конструктора инициализации - C++
Во время выполнения программы потомок не может использовать матрицу, инициализированную в предке. Я создала конструктор с параметрами, в...

C2512: odejda: нет подходящего конструктора по умолчанию - C++
Пытаюсь разобраться с полиморфизмом. Помогите пожалуйтста. #include &lt;string&gt; #include &lt;iostream&gt; using namespace std; class...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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