2010-08-10 2 views
2

Мой вопрос связан с вопросом this.Функция и шаблоны для друзей

#include<iostream> 
template< typename T > 
class T1 { 
public: 
    T i; 
    void display() 
    { 
     std::cout<<i<<"\n"<<j<<"\n"<<k; 
} 
protected: 
    T j; 
private: 
    T k; 
    friend void Test(T1 &obj); 
}; 

template<typename T> 
void Test(T1<T> &obj) 
{ 
    T a=T(); 

    obj.i=a; 
    obj.j=a; 
    obj.k=a; 
} 


int main() 
{ 
    T1<int>a; 
    Test(a); 
    a.display(); 
} 

Почему код не указан?

+2

Здесь: http://ideone.com/G6kcV. Прочтите записку для себя, она дает довольно подробные инструкции. – jpalecek

+0

@jpalecek Это очень полезный сайт. –

ответ

6

friend void Test(T1 &obj); заявляет о функции non template.

Заявить об этом как template.

Попробуйте это:

.... 
private: 
T k; 
template<typename U> 
    friend void Test(T1<U> &obj); 
}; 
Смежные вопросы