【发布时间】:2016-01-10 16:08:42
【问题描述】:
我是使用模板的新手,并且还为它们重载了运算符。这是我的简单代码。我试图为T 类型写一个operator<<,但遇到了一些奇怪的错误!
#include <iostream>
using namespace std;
template <class T>
class S {
T val;
public:
S<T>(T v) { val = v; }
};
template <class T>
ostream& operator<<(ostream& os, T& to) {
return (os << to);
}
template <class T>
void write_val(T& t) {
cout << t << endl;
}
int main()
{
S<int> s1(5);
write_val(s1);
return 0;
}
我不知道:
- 为什么我会遇到这个错误。
- 那种错误是什么。
- 以及如何解决这个问题并让代码成功运行。
你能帮我解决上述情况吗?
PS:这是一个更大的代码的一小部分。我将这一部分分开是因为我认为这是我的问题的根源。
错误:
Unhandled exception at 0x00EEC529 in test3.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00342F8C)
【问题讨论】:
-
请重新输入错误而不是屏幕截图。屏幕截图不好用谷歌搜索。
标签: c++ class templates operator-overloading