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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.74
BANKIR
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
12.12.2012, 16:53     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #1
Привет, мне 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;
надеюсь на вашу помощь)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 16:53     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию"
Посмотрите здесь:

C2512: odejda: нет подходящего конструктора по умолчанию C++
C++ error C2512: no appropriate default constructor available, несмотря на наличие конструктора по умолчанию
Нет подходящего конструктора по умолчанию. Наследование C++
Ошибка "error C2446: :: нет преобразования "int" в "char *" C++
C++ Конструктор Шредингера "нет подходящего конструктора по умолчанию", хотя он есть
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
12.12.2012, 16:59     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #2
попробую предположить ,
C++
1
2
3
class Dog
{public:
    Dog(int initialAge=0);
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
12.12.2012, 17:17     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #3
Привет, мне Visual C++ выдал такие ошибки
Всё правильно он ворчит.
Вы пытаетесь создать объект
Цитата Сообщение от BANKIR Посмотреть сообщение
C++
1
Dog Guf;
без параметров. У Вас не определен такой конструктор.
BANKIR
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 56
12.12.2012, 17:26  [ТС]     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #4
Спасибо большое, я верил в вас)
Новичок
Модератор
 Аватар для Новичок
1141 / 712 / 148
Регистрация: 17.07.2012
Сообщений: 4,043
Записей в блоге: 1
Завершенные тесты: 2
08.01.2015, 00:16     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #5
Извините,что подымаю тему, но
Цитата Сообщение от Croessmah Посмотреть сообщение
У Вас не определен такой конструктор.
как понимать то что в книге Лафоре написано это?
В программе ENGLOBJ не было конструктора, но определения работали без
ошибок. Почему же они работали без конструктора? Это объясняется тем, что
компилятор автоматически встраивает в программу конструктор без параметров, который и создает переменные класса, несмотря на то, что явного определения конструктора мы не делали.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
08.01.2015, 00:26     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #6
Цитата Сообщение от Новичок Посмотреть сообщение
как понимать то что в книге Лафоре написано это?
если есть конструктор, объявленный пользователем (user-defined), то конструктор без параметров автоматически не создается.
Новичок
Модератор
 Аватар для Новичок
1141 / 712 / 148
Регистрация: 17.07.2012
Сообщений: 4,043
Записей в блоге: 1
Завершенные тесты: 2
08.01.2015, 00:29     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #7
Странно это... Ну спасибо вам, теперь буду знать.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
08.01.2015, 00:31     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #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.
Новичок
Модератор
 Аватар для Новичок
1141 / 712 / 148
Регистрация: 17.07.2012
Сообщений: 4,043
Записей в блоге: 1
Завершенные тесты: 2
08.01.2015, 00:34     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #9
Цитата Сообщение от Croessmah Посмотреть сообщение
If there is no user-declared constructor for class X, a constructor having no parameters is implicitly declared as defaulted (8.4).
Т.е конструктор по умолчанию создается автоматически если только нет конструкторов созданных пользователем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2015, 00:36     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию"
Еще ссылки по теме:

Конструктор по умолчанию вызывается после конструктора инициализации C++
C++ Нет подходящего конструктора по умолчанию
C++ Создание лог файла. Нет подходящего конструктора по умолчанию

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
08.01.2015, 00:36     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию" #10
Цитата Сообщение от Новичок Посмотреть сообщение
Т.е конструктор по умолчанию создается автоматически если только нет конструкторов созданных пользователем?
Да.
Yandex
Объявления
08.01.2015, 00:36     Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию"
Ответ Создать тему
Опции темы

Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru