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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.76
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
#1

"no appropriate default constructor available" - C++

31.07.2010, 14:49. Просмотров 5748. Ответов 6
Метки нет (Все метки)

Начал писать класс и попытался скомпилировать проект...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class TMyGame: public TGame{
public:
 TMyGame(char *WorldFileName, char **Model, unsigned ModelCount, char *TexturesFileName);
 
};
 
TMyGame::TMyGame(char *WorldFileName, char **Model, unsigned ModelCount, char *TexturesFileName) 
{
 LoadPrimitives(WorldFileName, World);
 ReadNames(TexturesFileName, Textures);
 for (int i = 0; i < ModelCount; i++)
 {
   
 }
}
Возникла ошибка:error C2512: 'TGame' : no appropriate default constructor available
В чём может быть проблема??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2010, 14:49     "no appropriate default constructor available"
Посмотрите здесь:

no appropriate default constructor available при создании новой структуры C++
C++ Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004".
C++ E2251 Cannot find default constructor to initialize base class
C++ Ошибка "expected constructor, destructor, or type conversion"
C++ error C2512: no appropriate default constructor available, несмотря на наличие конструктора по умолчанию
ошибка cannot find default constructor C++
Необработанное исключение в "0x778e15de" в "dir-3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2298 / 1668 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
31.07.2010, 14:51     "no appropriate default constructor available" #2
Цитата Сообщение от AKE Посмотреть сообщение
В чём может быть проблема??
Проблема в том, что ты привел не весь код.
Конкретная строку на которую ругается покажи.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
31.07.2010, 15:34     "no appropriate default constructor available" #3
AKE, Нету конструктора по умолчанию... Есть только с параметрами. В мейне судя по всему используете запись TGame Ob; или TGame*Ob=new TGame; Но для этого надо перегрузить конструктор по умолчанию. Т.е. TGame(){}. И следовательно в TMyGame тоже сделать конструктор по умолчанию, как вариант.
Или же вызывать в мейне конструктор с параметрами, т.е. TMyGame(параметры). ЗЫ. Какое-то странное наследование... Конструктор базового класса в конструкторе произвождного писать не пробовали?
А лучше все же киньте весь код...
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
31.07.2010, 17:50  [ТС]     "no appropriate default constructor available" #4
Объявляю так
TMyGame MyGame("test.txt", 0, 0, "Textures.txt");
Класс TGame:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class TGame{
public:
 TGame(char *WorldFileName, char *TexturesFileName);
 void InitScene();
 virtual void Render();
 ~TGame();
protected:
 TPrimitives World;
 TTextures Textures;
 TTexturesData TexturesData;
 Punsigned textures;
 void InitWorld();
 void DrawWorld();
 GLuint world;
};
Ругается на строку 8 в этой части кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class TMyGame: public TGame{
public:
 TMyGame(char *WorldFileName, char **Model, unsigned ModelCount, char *TexturesFileName);
 
};
 
TMyGame::TMyGame(char *WorldFileName, char **Model, unsigned ModelCount, char *TexturesFileName) 
{
 LoadPrimitives(WorldFileName, World);
 ReadNames(TexturesFileName, Textures);
 for (int i = 0; i < ModelCount; i++)
 {
   
 }
}
CyBOSSeR
Эксперт C++
2298 / 1668 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
31.07.2010, 18:03     "no appropriate default constructor available" #5
AKE, в конструкторе производного класса отсутствует вызов конструктора базового класса, в таком случае должен быть вызван конструктор по умолчанию базового класса, которого нет. Читайте про конструкторы и наследование.
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
31.07.2010, 18:48     "no appropriate default constructor available" #6
Цитата Сообщение от AKE Посмотреть сообщение
C++
1
TMyGame MyGame("test.txt", 0, 0, "Textures.txt");
Здесь у тебя "test.txt" и "Textures.txt" константы...
Значит вот это
C++
1
TMyGame(char *WorldFileName, char **Model, unsigned ModelCount, char *TexturesFileName);
перепиши так..
C++
1
TMyGame(const char *WorldFileName, /*const*/ char **Model, unsigned ModelCount, const char *TexturesFileName);
И так далее..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2010, 19:04     "no appropriate default constructor available"
Еще ссылки по теме:

C++ Необработанное исключение в "0x013f2b22" в "123.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd"
Error C2361: пропуск инициализации "Height" из-за метки "default" C++
Default copy constructor C++
C++ Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type"
C++ Ошибка компиляции "no instance of constructor 'std::thread::thread' matches the argument list"

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

Или воспользуйтесь поиском по форуму:
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
31.07.2010, 19:04  [ТС]     "no appropriate default constructor available" #7
CyBOSSeR,Так правильно?
C++
1
2
3
4
5
6
7
8
 TMyGame( const char *WorldFileName, char **Model, const unsigned ModelCount, const char *TexturesFileName):
TGame(WorldFileName, TexturesFileName)
{
 for (int i = 0; i < ModelCount; i++)
 {
   
 }
}
Yandex
Объявления
31.07.2010, 19:04     "no appropriate default constructor available"
Ответ Создать тему
Опции темы

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