fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. template<class T>
  5. class vector_ref
  6. {
  7. public:
  8. vector_ref(T *pData, int pN) {Data = pData; N = pN;};
  9. T *Data;
  10. int N;
  11. vector_ref<T>& operator=(const std::vector<T> &v1)
  12. {
  13. for(int ii = 0; ii < N; ii++)
  14. {
  15. Data[ii] = v1[ii];
  16. }
  17. return *this;
  18. }
  19. std::vector<T> operator() ()
  20. {
  21. std::vector<T> v1(N);
  22. for(int ii = 0; ii < N; ii++)
  23. {
  24. v1[ii] = Data[ii];
  25. }
  26. return v1;
  27. }
  28. // std::vector<T>& operator ()()
  29. // {
  30. // std::vector<T> v1(N);
  31. // for(int ii = 0; ii < N; ii++)
  32. // {
  33. // v1[ii] = Data[ii];
  34. // }
  35. // return v1;
  36. // }
  37. // std::vector<T> tostring()
  38. // {
  39. // std::vector<T> v1(N);
  40.  
  41. // }
  42. };
  43.  
  44. template<class T>
  45. void printVec(std::vector<T> v1)
  46. {
  47. for(int ii = 0; ii < v1.size(); ii++)
  48. {
  49. std::cout << v1[ii] << std::endl;
  50. }
  51. }
  52.  
  53. int main()
  54. {
  55. std::vector<double> v,s;
  56. v.push_back(1.0);
  57. v.push_back(2.0);
  58. v.push_back(3.0);
  59.  
  60.  
  61. vector_ref<double> v_ref(&v[0],3);
  62. //s=v_ref.operator();
  63. printVec(v_ref()); // Compiler error
  64.  
  65. return 0;
  66. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
1
2
3