У меня есть классы SuperClass и Subclass, где SubClass наследуется от SuperClass.C++ - недопустимое использование неопределенного типа ... - Объявление класса
В SuperClass у меня есть постоянное свойство, значение которого зависит от использования SubClass. Howerver мне нужно, чтобы он был объявлен в SuperClass, так как в SuperClass есть и другие методы, но мне нужно инициализировать его в SubClass, поскольку значение констант изменяется в зависимости от типа SubClass, созданного экземпляром.
От previous question on SO Я знаю, что лучшим решением для этого является класс признаков. Однако использование такого решения потребует значительных изменений в моем коде. Поэтому я выбрал предложенный здесь подход.
SuperClass.h
#ifndef SUPERCLASS_H
#define SUPERCLASS_H
#include <string>
template <class T, class P>
class SuperClass
{
public:
typedef T type;
typedef P position;
static const position NULLPOSITION;
};
#endif
SubClass.h
#ifndef SUBCLASS_H
#define SUBCLASS_H
#include <string>
#include "SuperClass.h"
template <class T>
class SubClass:public SuperClass<T,int>
{
};
template<class T>
const typename SuperClass<T,int>::position SuperClass<T,int>::NULLPOSITION=0;
#endif
main.cpp
#include <cstdlib>
#include <iostream>
#include "SubClass.h"
using namespace std;
int main(int argc, char *argv[])
{
SubClass<int> subClass;
system("PAUSE");
return EXIT_SUCCESS;
}
На компиляции я получаю
invalid use of undefined type `class SuperClass<T, int>
и
declaration of `class SuperClass<T, int>
ошибки. Что может быть проблемой?
Пожалуйста, пожалуйста, пожалуйста, не вызывайте свой класс. – Borgleader
@Borgleader (лучше называть его 'class class',' struct class', 'class struct' или' struct struct', right?: P) –
@Borgleader Хорошо, я отредактировал вопрос, соответственно. – geraldCelente