Есть код:
#include <iostream>
#include <cstdlib>
using std::ostream;
using std::cin;
using std::cout;
template <class T> class Array
{
int size;
T *arr;
public:
Array(int size)
{
this->size = size;
arr = (T*)calloc(size,sizeof(T));
}
~Array()
{
free(arr);
}
template <T> friend ostream operator << (ostream &stream, const Array<T> array);
};
template <class T> ostream operator << (ostream &stream, const Array<T> array)
{
int i = 0;
for (i = 0; i < array.size; i++)
stream<<array.arr[i]<<" ";
return stream;
}
int main()
{
Array <int> arr (5);
cout<<arr;
}
Выдает ошибку на cout:
C:\Users\Работа\Desktop\array.cpp||In instantiation of 'std::ostream operator<<(std::ostream&, Array) [with T = int; std::ostream = std::basic_ostream]':| C:\Users\Работа\Desktop\array.cpp|35|required from here| C:\Users\Работа\Desktop\array.cpp|9|error: 'int Array::size' is private| C:\Users\Работа\Desktop\array.cpp|27|error: within this context| C:\Users\Работа\Desktop\array.cpp|10|error: 'int* Array::arr' is private| C:\Users\Работа\Desktop\array.cpp|28|error: within this context| c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\ios_base.h|786|error: 'std::ios_base::ios_base(const std::ios_base&)' is private| c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_ios.h|66|error: within this context| c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream|58|note: synthesized method 'std::basic_ios::basic_ios(const std::basic_ios&)' first required here | C:\Users\Работа\Desktop\array.cpp|29|note: synthesized method 'std::basic_ostream::basic_ostream(const std::basic_ostream&)' first required here | ||=== Build failed: 6 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|