尝试重载模板类友元<<运算符时出错
Errors trying to overload template class friend << operator
尝试编写更好版本的数组类型时,我遇到了一个问题。由于某种原因,声明不起作用。它给我抛出了一堆奇怪的错误。尝试查找问题,但到目前为止没有找到任何东西。这是代码:
Template <class T>
class SafeArray {
private:
int size;
int elements;
int index;
T* arr;
public:
SafeArray(int n);
~SafeArray();
void push_back(T item);
void resize(int size);
friend std::ostream& operator << (std::ostream& os, const SafeArray<T>& ar)
};
以及类外的实现:
template<class T>
std::ostream& operator << <T> (std::ostream& os, const SafeArray<T> & arr) {
for (int i = 0; i < arr.elements; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return os;
}
如果你想要朋友模板,friend
声明应该是
template <class T>
class SafeArray {
...
template<class X>
friend std::ostream& operator << (std::ostream& os, const SafeArray<X>& ar);
};
实现应该是
template<class T>
std::ostream& operator << (std::ostream& os, const SafeArray<T> & arr) {
...
}
住
BTW:在operator<<
的实施中,我认为std::cout << arr[i] << " ";
应该std::cout << arr.arr[i] << " ";
。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 呼叫运营商<<临时
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 为x86而非x64编译时出错
- <<操作员在下面的行中工作
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了