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

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

Войти
Регистрация
Восстановить пароль
 
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176
#1

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

08.10.2011, 15:37. Просмотров 745. Ответов 4
Метки нет (Все метки)

Привет! Ни как не могу разобраться, в чём дело. Создал 2 класса: Base и Derived, где Derived наследует Base. Но при компиляции возникает ошибка: "Error C2512: Base: нет подходящего конструктора по умолчанию d:\doc\dev\visual studio 2010\test\test\Derived.h 7 1 Test". Вот исходники:
Base.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
class Base
{
public:
 
    Base(int a)
    {
    }
 
    virtual ~Base(void)
    {
    }
};
Derived.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "base.h"
class Derived:  public Base
{
public:
 
    Derived(void)
    {       
    }
 
    virtual ~Derived(void)
    {
    }
};
Test.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Test.cpp: главный файл проекта.
 
#include "stdafx.h"
#include "Derived.h"
 
using namespace System;
 
int main(array<System::String ^> ^args)
{   
    Derived a=Derived();
    Console::WriteLine(L"Здравствуй, мир!");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2011, 15:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при наследовании (C++):

Ошибка при наследовании - C++
Имеется архитектура вида: класс &quot;человек&quot;, от него производные &quot;препод&quot; и &quot;член приемной комиссии&quot;. От их двоих производный класс &quot;Препод и...

Ошибка при наследовании? - C++
Программа компилируется, но консоль не выдает информацию. Связано ли это как то с переполнением буфера? Программа небольшая укажите...

Ошибка при наследовании - C++
Здраствуйте,не могу понять где именно оштбся,возможно кто-то поможет,код прилагаю //#include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Ошибка при наследовании - C++
Подскажите пожалуйста почему наследование класса readwrite не работает? //Программа считывает данные из файла и строит графики ...

Ошибка при наследовании - C++
Вот такой код: class Figure2 { protected: int Color; int CenterX; int CenterY; public:

Использование шаблонов при наследовании, ошибка при компиляции - C++
При изучении списков написал шаблон протестировал, все работает. После написал класс наследник от шаблона List.h, компилятор выдает...

4
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
08.10.2011, 16:14 #2
У вас конструктор базового класса принимает 1 аргумент, а вы создаете объект без аргументов.
При создании объекта производного класса, сперва вызывается конструктор производного класса, затем конструктор базового класса. У базового класса есть только 1 конструктор и он принимает 1 аргумент.
1
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176
08.10.2011, 16:26  [ТС] #3
Получается, чтобы использовать наследвание, нужно, чтобы у базового класса был конструктор без параметров. А можно ли как-нибудь передать параметры в конструктор базового класса? Просто я пробовал писать так:
C++
1
2
3
    Derived(int a)
    {       
    }
и
C++
1
Derived a=Derived(10);
, но это не помогло.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
08.10.2011, 16:27 #4
Вот так:
C++
1
2
3
4
Derived(int a )
: Base( a ) // явно вызываем конструктор класса Base
{
}
Можно добавить конструктор по умолчанию в класс Base и тогда ошибки не будет.
1
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
08.10.2011, 16:29 #5
Дополню Chelioss:
Чтобы код работал нужно либо явно инициализировать Base из Derived(void)
C++
1
Derived(void):Base(0){}
Либо добавить к Base конструктор по умолчанию без параметров ну или ещё убрать существующий у Base коструктор (так как он всё равно ничего не делает) и компилятор сам создаст классу Base конструктор по умолчанию.
1
08.10.2011, 16:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2011, 16:29
Привет! Вот еще темы с ответами:

Ошибка при наследовании класса - C++
Всем доброго времени суток, пытаюсь отнаследовать класс, вот такой код я смастерил: #ifndef CLASS_H_ #define CLASS_H_ class stack ...

Ошибка multiple definition of main при наследовании - C++
Всем привет. Проблема описана много где в интернете , но я так и не смог понять в чём косяк у меня. Помогите разобраться. Есть...

Ошибка памяти. Передача массива при наследовании - C++
#include&lt;iostream&gt; using namespace std; class map { protected: char **my_map; public: map(){} map(char **maps) {

Ошибка: undefined reference to при наследовании класса - C++
Здравствуйте форумчане. Пытаюсь наследовать класс MyService от OAuthService и получаю множество ошибок: Ошибка: undefined reference to...


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

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

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