-1
내 문제가 조금 이상해서 답변을 찾을 수 없습니다. 나는 지금 내를 구현하려는) 내 프로토콜중첩 템플릿 클래스의 구현을 상속합니다
template <template<class TMessage> class TFrame, class TMessage>
class Protocoll
{
...
}
2) 내 프레임과 메시지
class MessageImpl : public Message
{
...
}
class FrameImpl : public Frame<MessageImpl>
{
...
}
3의 구현을 수행하기위한 중첩 된 템플릿 클래스가 할
1) 프레임과 메시지에 대한 구현을 사용하는 프로토콜.
class ProtocolImpl : public Protocol<FrameImpl, MessageImpl>
{
...
}
컴파일러는 (분명히)이기 때문에 더 일반적인 템플릿이 더 이상 입력하지, 첫 번째 템플릿 매개 변수 "FrameImpl"에 대해 불평.
이 컴파일을 할 수 있습니까? 머리글에 구현해야하기 때문에 제 'FrameImpl'일반/템플릿을 만들고 싶지 않습니다.
덕분에 많은
편집 : 때문에 완전한 샘플 요청의
: 나는 템플릿 형식으로 프레임을 전달할 수 "ProtocolImpl"의 선언에
//--------------------- definitions
class Message
{
public:
virtual ~Message() = default;
virtual void foo() noexcept = 0;
};
template <class Message>
class Frame
{
public:
virtual ~Frame() = default;
virtual void foo() noexcept = 0;
};
template <template<class TMessage> class TFrame, class TMessage>
class Protocol
{
public:
virtual ~Protocol() = default;
virtual void foo() noexcept;
};
//--------------------- implementations
class MessageImpl : public Message
{
public:
void foo() noexcept
{ }
};
class FrameImpl : public Frame<MessageImpl>
{
public:
FrameImpl()
: message{ }
{ }
void foo() noexcept
{
message.foo();
}
private:
MessageImpl message;
};
class ProtocolImpl : public Protocol<FrameImpl, MessageImpl>
{
};
을하지만, FrameImpl이 아닙니다.
문제를 재현하는 [MCVE]를 제공해주십시오. –