2015-04-29 6 views
0

У меня есть такой класссоздать ссылку на шаблон виртуального класса C++

template<typename T> 
    class ConnectionStatus: 
    { 
    public: 

     virtual void setStatus(const T& status) = 0; 
     virtual T getStatus() = 0; 
    }; 

И я хочу иметь ссылку на этот класс в другой класс, так что я могу это сделать: ConnectionStatus<typename T>& status; но компилятор сказал error: template argument 1 is invalid. Итак, как я могу сделать ссылку на шаблон виртуального класса? Благодарим вас за помощь.

ответ

2

Существуют две основные возможности: когда вы знаете, что этот аргумент шаблона должен быть для вашего класса, а когда нет.

Для первых, это простой случай предоставления ему (скажем, это int в данном случае):

struct MyClass 
{ 
    ConnectionStatus<int> &m_connection_status; 
}; 

Если вы не знаете, аргумент, чтобы ваш класс шаблонный класс:

template <typename ConnectionStatusType> 
struct MyClass 
{ 
    ConnectionStatus<ConnectionStatusType> &m_connection_status; 
}; 
Смежные вопросы