Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Абстрактный класс без определения конструктора


Автор: SABROG 31.1.2008, 21:12
При компиляции библиотеки с помощью mingw столкнулся с косяком:

Код

..\TestClass.cpp:13: error: prototype for `TestClass::TestClass(void*)' does not match any in class `TestClass'
..\TestClass.h:11: error: candidates are: TestClass::TestClass()
..\TestClass.h:11: error:                 TestClass::TestClass(const TestClass&)


Фишка вот в чем:

//TestClass.h
Код

class TestClass
{
public:
    virtual ~TestClass();
};
class TestClass2: public TestClass
{
public:
    TestClass2(void *p){int i=0; i++;}
};
#endif /*TESTCLASS_H_*/

//TestClass.cpp
Код

TestClass::TestClass(void *p)
{
    int i = 1; i--;
}


Т.е. абстрактный класс TestClass без явного определения конструктора, но с явной его реализацией.
Причем если я правильно все понял, то MSVC такое хавает...
---
Извиняюсь, разобрался. Сам виноват, не учел, что при обновлении проекта какие-то файлы могут удаляться. В итоге скопировал к старым новые файлы, возник конфликт.

Автор: JackYF 31.1.2008, 21:33
Цитата(SABROG @  31.1.2008,  20:12 Найти цитируемый пост)
Т.е. абстрактный класс TestClass без явного определения конструктора, но с явной его реализацией.

дык это неправильно. Объяви конструктор TestClass(void*) внутри объявления класса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)