Guest User

Untitled

a guest
Jul 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. template <typename T>
  2. class Client
  3. {
  4. private:
  5. Client(...) {}
  6. ~Client() {}
  7.  
  8. template <typename U>
  9. friend class Client<T>& initialize(...);
  10. };
  11.  
  12.  
  13. template <typename T>
  14. Client<T> initialize(...)
  15. {
  16. Client<T> client = new Client<T>(...);
  17. }
  18.  
  19. template <typename T>
  20. class Client
  21. {
  22. private:
  23. Client() {} // Note private constructor
  24. public:
  25. ~Client() {} // Note public destructor
  26.  
  27. // Note friend template function syntax
  28. template<typename U>
  29. friend Client<U> initialize();
  30. };
  31.  
  32.  
  33. template<typename T>
  34. Client<T> initialize()
  35. {
  36. /* ... */
  37. }
  38.  
  39. int main()
  40. {
  41. Client<int> client = initialize<int>();
  42. }
  43.  
  44. template <typename U> friend Client<U> initialize(.....);
  45.  
  46. template <typename T>
  47. class Client
  48. {
  49. private:
  50. Client() {}
  51. ~Client() {}
  52.  
  53. template <typename U>
  54. friend Client<U> *initialize();
  55.  
  56. template <typename U>
  57. friend void destroy( Client<U> * );
  58. };
  59.  
  60.  
  61. template <typename T>
  62. Client<T> *initialize()
  63. {
  64. return new Client<T>();
  65. }
  66.  
  67. template <typename T>
  68. void destroy( Client<T> *client )
  69. {
  70. delete client;
  71. }
  72.  
  73. int main()
  74. {
  75. auto client = initialize<int>();
  76.  
  77. destroy( client );
  78.  
  79. return 0;
  80. }
  81.  
  82. template <typename T>
  83. class MyClass {
  84. template <typename U>
  85. friend MyClass<U> f();
  86. };
  87.  
  88. // Forward declarations
  89. template <typename T>
  90. class MyClass;
  91. template <typename T>
  92. MyClass<T> f();
  93.  
  94. // Definition of class template
  95. template <typename T>
  96. class MyClass {
  97. friend MyClass<T> f<T>();
  98. };
  99.  
  100. // Definition of friend function
  101. template <typename T>
  102. MyClass<T> f() { ... }
  103.  
  104. template <typename T>
  105. class MyClass {
  106. friend MyClass<T> f() { ... } // define inline
  107. };
Add Comment
Please, Sign In to add comment