Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
1

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

08.10.2011, 15:37. Показов 1079. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2011, 15:37
Ответы с готовыми решениями:

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

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

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

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

4
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
08.10.2011, 16:14 2
У вас конструктор базового класса принимает 1 аргумент, а вы создаете объект без аргументов.
При создании объекта производного класса, сперва вызывается конструктор производного класса, затем конструктор базового класса. У базового класса есть только 1 конструктор и он принимает 1 аргумент.
1
36 / 29 / 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
186 / 186 / 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
1184 / 540 / 78
Регистрация: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2011, 16:29

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

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

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

Ошибка компиляции при наследовании классов
У меня есть класс CNew который наследует класс CTransport но при компиляции выводит ошибку ниже 4...


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

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

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