Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Виктор_Сен
33 / 26 / 2
Регистрация: 01.08.2011
Сообщений: 176
#1

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

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

Привет! Ни как не могу разобраться, в чём дело. Создал 2 класса: Base и Derived, где Derived наследует Base. Но при компиляции возникает ошибка: "Error C2512: Base: нет подходящего конструктора по умолчанию d:\doc\dev\visual studio 2010\test\test\Derived.h 7 1 Test". Вот исходники:
http://www.cyberforum.ru/cpp-beginners/thread2274166.html
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++):

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

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

Ошибка при наследовании
Здраствуйте,не могу понять где именно оштбся,возможно кто-то поможет,код...

Ошибка при наследовании
Подскажите пожалуйста почему наследование класса readwrite не работает?...

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

4
Chelioss
181 / 181 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
08.10.2011, 16:14 #2
У вас конструктор базового класса принимает 1 аргумент, а вы создаете объект без аргументов.
При создании объекта производного класса, сперва вызывается конструктор производного класса, затем конструктор базового класса. У базового класса есть только 1 конструктор и он принимает 1 аргумент.
1
Виктор_Сен
33 / 26 / 2
Регистрация: 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
181 / 181 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
08.10.2011, 16:27 #4
Вот так:
C++
1
2
3
4
Derived(int a )
: Base( a ) // явно вызываем конструктор класса Base
{
}
Можно добавить конструктор по умолчанию в класс Base и тогда ошибки не будет.
1
Gepar
1181 / 537 / 77
Регистрация: 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
Привет! Вот еще темы с решениями:

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

Ошибка при наследовании класса
Всем доброго времени суток, пытаюсь отнаследовать класс, вот такой код я...

Ошибка памяти. Передача массива при наследовании
#include&lt;iostream&gt; using namespace std; class map { protected: char...

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


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

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

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