이 작동하지 않는 추상적 인 템플릿 클래스의 벡터로 만들려면? 알아, 포인터를 써야 해.하지만 이걸 작동 시키려면 또 뭐가 필요하니? 이 작업을 수행하기 위해 기본 구조를 어떻게 바꿀 수 있습니까?방법에 따라
나는 다음과 같은 인터페이스를 사용
// Interface
template <typename T>
class IRule
{
public:
virtual bool isValid(T value) = 0;
};
그리고 내 예를 들어 클래스는 다음과 같습니다
class RuleRangeDouble : public IRule<double>
{
private:
double min;
double max;
public:
bool isValid(double value)
{
....
};
};
왜 작동하지 않습니다 하나는 특별한 일반을 정의하는 (그러나 템플릿이 아닌) 반환 형식이
getBestValidValue()
하는 데 사용되며 (여기에 문제가있는 것 juanchopanza의 대답)isValid(value)
에 대한 인수 형식으로 할 수있다? 'RuleRangeDouble'이'IRule'에서 공개적으로 파생되면, 작동하지 않아야 할 이유가 없습니다. –@JamesKanze 'IRule'이 클래스 템플릿입니다. – juanchopanza
@ juanchopanza 나는 그것을 놓쳤다. 'IRule'이 템플릿 인 경우,'IRule *'은 유효한 타입이 아닙니다. –