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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.74
BANKIR
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
#1

Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" - C++

12.12.2012, 16:53. Просмотров 3562. Ответов 9
Метки нет (Все метки)

Привет, мне Visual C++ выдал такие ошибки

error C2512: Dog: нет подходящего конструктора по умолчанию G:\projects\class, day 6\class, day 6\class, day 6.cpp 50
IntelliSense: для класса "Dog" не существует конструктор по умолчанию g:\projects\class, day 6\class, day 6\class, day 6.cpp 50
делаю все как в уроке, пытаюсь описать класс в заголовочном файле, вот код с заголовочного файла

C++
1
2
3
4
5
6
7
8
9
10
class Dog
{public:
    Dog(int initialAge);
    ~Dog();
    int GetAge() const { return itsAge; }
    void SetAge(int age) {itsAge=age;}
    void Bravic() const {std::cout<<"ГАВ.\n";}
private:
    int itsAge;
};
а вот основной СPP



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include<Windows.h>
#include "class.h"
 
Dog::Dog(int initialAge)
{ itsAge=initialAge;
}
 
 
Dog::~Dog()
{}
 
int main()
{
setlocale(LC_ALL,"Russian");
 
 
Dog Guf;
Guf.SetAge(7);
Guf.Bravic();
std::cout<<"Guf сколько тебе лет?\n";
std::cout<<Guf.GetAge()<<"лет.\n";
Guf.Bravic();
 
getch();
return 0;
надеюсь на вашу помощь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 16:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" (C++):

Конструктор Шредингера "нет подходящего конструктора по умолчанию", хотя он есть - C++
собственно, код. на 156-й строке ( cont(circi);) ругается на отсутствие конструктора в классе. но он там есть! я его видел! а если...

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

error C2512: no appropriate default constructor available, несмотря на наличие конструктора по умолчанию - C++
Вот код: class University { string name; Human *chief; public: vector&lt;Faculty&gt; subList;

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

9
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
12.12.2012, 16:59 #2
попробую предположить ,
C++
1
2
3
class Dog
{public:
    Dog(int initialAge=0);
1
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
12.12.2012, 17:17 #3
Привет, мне Visual C++ выдал такие ошибки
Всё правильно он ворчит.
Вы пытаетесь создать объект
Цитата Сообщение от BANKIR Посмотреть сообщение
C++
1
Dog Guf;
без параметров. У Вас не определен такой конструктор.
1
BANKIR
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
12.12.2012, 17:26  [ТС] #4
Спасибо большое, я верил в вас)
0
Новичок
Модератор
1238 / 786 / 175
Регистрация: 17.07.2012
Сообщений: 4,224
Записей в блоге: 1
Завершенные тесты: 2
08.01.2015, 00:16 #5
Извините,что подымаю тему, но
Цитата Сообщение от Croessmah Посмотреть сообщение
У Вас не определен такой конструктор.
как понимать то что в книге Лафоре написано это?
В программе ENGLOBJ не было конструктора, но определения работали без
ошибок. Почему же они работали без конструктора? Это объясняется тем, что
компилятор автоматически встраивает в программу конструктор без параметров, который и создает переменные класса, несмотря на то, что явного определения конструктора мы не делали.
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
08.01.2015, 00:26 #6
Цитата Сообщение от Новичок Посмотреть сообщение
как понимать то что в книге Лафоре написано это?
если есть конструктор, объявленный пользователем (user-defined), то конструктор без параметров автоматически не создается.
1
Новичок
Модератор
1238 / 786 / 175
Регистрация: 17.07.2012
Сообщений: 4,224
Записей в блоге: 1
Завершенные тесты: 2
08.01.2015, 00:29 #7
Странно это... Ну спасибо вам, теперь буду знать.
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
08.01.2015, 00:31 #8
Из Стандарта:
A default constructor for a class X is a constructor of class X that can be called without an argument. If there is no user-declared constructor for class X, a constructor having no parameters is implicitly declared as defaulted (8.4). An implicitly-declared default constructor is an inline public member of its class. A defaulted default constructor for class X is defined as deleted if:

— X is a union-like class that has a variant member with a non-trivial default constructor,
— any non-static data member with no brace-or-equal-initializer is of reference type,
— any non-variant non-static data member of const-qualified type (or array thereof) with no brace-or-
equal-initializer does not have a user-provided default constructor,
— X is a union and all of its variant members are of const-qualified type (or array thereof),
— X is a non-union class and all members of any anonymous union member are of const-qualified type
(or array thereof), or
— any direct or virtual base class, or non-static data member with no brace-or-equal-initializer, has class type M (or array thereof) and either M has no default constructor or overload resolution (13.3) as applied to M’s default constructor results in an ambiguity or in a function that is deleted or inaccessible from the defaulted default constructor.

A default constructor is trivial if it is neither user-provided nor deleted and if:
— its class has no virtual functions (10.3) and no virtual base classes (10.1), and
— no non-static data member of its class has a brace-or-equal-initializer, and
— all the direct base classes of its class have trivial default constructors, and
— for all the non-static data members of its class that are of class type (or array thereof), each such class
has a trivial default constructor.
Otherwise, the default constructor is non-trivial.
1
Новичок
Модератор
1238 / 786 / 175
Регистрация: 17.07.2012
Сообщений: 4,224
Записей в блоге: 1
Завершенные тесты: 2
08.01.2015, 00:34 #9
Цитата Сообщение от Croessmah Посмотреть сообщение
If there is no user-declared constructor for class X, a constructor having no parameters is implicitly declared as defaulted (8.4).
Т.е конструктор по умолчанию создается автоматически если только нет конструкторов созданных пользователем?
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
08.01.2015, 00:36 #10
Цитата Сообщение от Новичок Посмотреть сообщение
Т.е конструктор по умолчанию создается автоматически если только нет конструкторов созданных пользователем?
Да.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2015, 00:36
Привет! Вот еще темы с ответами:

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

Создание лог файла. Нет подходящего конструктора по умолчанию - C++
Добрый день, почему вылетает ошибка не пойму. Ошибка: нет подходящего конструктора по умолчанию. И вторая ошибка Log::Log(void):...

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

Ошибка "error C2446: :: нет преобразования "int" в "char *" - C++
Ошибка: &quot;error C2446: :: нет преобразования &quot;int&quot; в &quot;char *&quot; Когда нажимаю двойным кликом на ошибку меня перекидывает в файл...


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

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

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