Advertisement
Smudla

C++ sablona CV5

Nov 11th, 2015
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.80 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include<iostream>
  4. #include<string>
  5. #include<exception>
  6.  
  7. using namespace std;
  8.  
  9. template<typename Klic, typename Hodnota>
  10. class Par{
  11.     Klic _klic;
  12.     Hodnota _hodnota;
  13. public:
  14.     Par(Klic klic, Hodnota hodnota) :_klic(klic), _hodnota(hodnota){
  15.  
  16.     }
  17.     //~Par(void);
  18.  
  19.     Klic& vratKlic();
  20.  
  21.     Hodnota& vratHodnotu();
  22.  
  23.     bool operator==(const Par<Klic, Hodnota>& druhy)const;
  24.     bool operator!=(const Par<Klic, Hodnota>& druhy)const;
  25. };
  26. template<typename Klic, typename Hodnota>
  27. Klic& Par <Klic, Hodnota> ::vratKlic(){
  28.     return _klic;
  29. }
  30. template<typename Klic, typename Hodnota>
  31. Hodnota& Par<Klic, Hodnota>::vratHodnotu(){
  32.     return _hodnota;
  33. }
  34.  
  35. template<typename Klic, typename Hodnota>
  36. bool Par<Klic, Hodnota>::operator==(const Par<Klic, Hodnota>& druhy)const{
  37.     return (_klic == druhy._klic && _hodnota == druhy._hodnota);
  38. }
  39.  
  40. template<typename Klic, typename Hodnota>
  41. bool Par<Klic, Hodnota>::operator!=(const Par<Klic, Hodnota>& druhy)const{
  42.     return (_klic != druhy._klic || _hodnota != druhy._hodnota);
  43. }
  44.  
  45. ////Parcialni specializace
  46. template<typename Klic, typename Hodnota>
  47. class Par<Klic*, Hodnota*>{
  48.     Klic* _klic;
  49.     Hodnota* _hodnota;
  50. public:
  51.     Par(Klic* klic, Hodnota* hodnota) :_klic(klic), _hodnota(hodnota){
  52.  
  53.     }
  54.     //~Par(void);
  55.  
  56.     Klic& vratKlic();
  57.  
  58.     Hodnota& vratHodnotu();
  59.  
  60.     bool operator==(const Par<Klic*, Hodnota*>& druhy)const;
  61.     bool operator!=(const Par<Klic*, Hodnota*>& druhy)const;
  62. };
  63. template<typename Klic, typename Hodnota>
  64. Klic& Par <Klic*, Hodnota*> ::vratKlic(){
  65.     return *_klic;
  66. }
  67. template<typename Klic, typename Hodnota>
  68. Hodnota& Par<Klic*, Hodnota*>::vratHodnotu(){
  69.     return *_hodnota;
  70. }
  71.  
  72. template<typename Klic, typename Hodnota>
  73. bool Par<Klic*, Hodnota*>::operator==(const Par<Klic*, Hodnota*>& druhy)const{
  74.     return (*_klic == *druhy._klic && *_hodnota == *druhy._hodnota);
  75. }
  76.  
  77. template<typename Klic, typename Hodnota>
  78. bool Par<Klic*, Hodnota*>::operator!=(const Par<Klic*, Hodnota*>& druhy)const{
  79.     return (*_klic != *druhy._klic || *_hodnota != *druhy._hodnota);
  80. }
  81.  
  82. //explicitni specializace
  83. template<>
  84. class Par<char*, char*>{
  85.     char* _klic;
  86.     char* _hodnota;
  87. public:
  88.     Par(char* klic, char* hodnota) :_klic(klic), _hodnota(hodnota){
  89.  
  90.     }
  91.     //~Par(void);
  92.  
  93.     char* vratKlic();
  94.  
  95.     char* vratHodnotu();
  96.  
  97.     bool operator==(const Par<char*, char*>& druhy)const;
  98.     bool operator!=(const Par<char*, char*>& druhy)const;
  99. };
  100.  
  101. char* Par <char*, char*>::vratKlic(){
  102.     return _klic;
  103. }
  104.  
  105. char* Par<char*, char*>::vratHodnotu(){
  106.     return _hodnota;
  107. }
  108.  
  109. bool Par<char*, char*>::operator==(const Par<char*, char*>& druhy)const{
  110.  
  111.     return (!strcmp(_klic, druhy._klic) && !strcmp(_hodnota, druhy._hodnota));
  112. }
  113.  
  114. bool Par<char*, char*>::operator!=(const Par<char*, char*>& druhy)const{
  115.     return (strcmp(_klic, druhy._klic) || strcmp(_hodnota, druhy._hodnota));
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement