流运算符重载不起作用
Ostream operator overload not working
我遇到了 ostream 运算符重载的问题。当我在我的 Main() 中输出时
/ c"progra"
为什么它输出文件路径而不是我创建的流,我无法弄清楚。我省略了不属于输出数组的代码。我正在尝试遍历数组的每个元素并将其添加到最终通过 cout 输出的字符串中;
主.cpp
Search test(20);
test.init_sorted();
cout << test;
搜索.cpp
Search::Search(int size)
{
array_size = size;
numbers = new int[size];
}
void Search::init_sorted()
{
for (int i = 0; i < array_size; i++) {
if (i == 0) {
srand(for_srand);
numbers[i] = rand() % 5;
}
else {
srand(for_srand);
numbers[i] = numbers[i - 1] + rand() % 5;
}
}
}
ostream & operator<<(ostream & os, const Search & s)
{
string output;
for (int i = 0; i < s.array_size; i++) {
output += s.numbers[i] + " / ";
}
os << output;
return os;
}
搜索.h
class Search
{
private:
int array_size;
int *numbers;
int for_srand = 10;
public:
Search(int);
~Search();
friend ostream& operator<<(ostream& os, const Search& dt);
};
未定义的行为。由于指针算法,
output += s.numbers[i] + " / ";
与
output += " / "[s.numbers[i]];
此外,它不会格式化任何数字:
for (int i = 0; i < s.array_size; i++) {
out << s.numbers[i] << " / ";
}
话虽如此,除非您知道自己在做什么,否则请使用标准容器和算法,例如 std::vector<int>
而不是int*
.
相关文章:
- 重载运算符 (<<) cout 在 c ++ 中不起作用,当我互相减去两个矩阵时不起作用
- 为什么重载运算符>在参数声明 const 时不起作用?
- 重载"+="运算符:c+=a_times_b 有效,但 c+=a*b 不起作用?
- = 重载不起作用
- 类中的重载函数(Students())是输出输入的信息,但它不起作用
- 为什么 SFINAE 在这个简单的成员函数重载中不起作用
- C++ 运算符重载 += 有效,但<<不起作用
- 需要使用 Book* 头变量重载运算符,但不起作用
- C++ 运算符删除重载对派生类不起作用
- 为什么重载运算符上的异常说明符'<<'不适用于任何 std::ostream 对象,但对库中定义的运算符不起作用?
- 运算符重载如何工作,为什么在我的情况下不起作用?
- 为什么重载运算符不起作用?
- 重载'='不起作用
- 二叉搜索树<<运算符重载不起作用
- 重载运算符<<不起作用
- 重新赋值在运算符中不起作用 = 重载
- 类构造函数重载不起作用
- c++中的函数重载不起作用
- 为什么 [] 的重载函数在这里不起作用?
- 如果重载函数仅被部分重写,则多态性不起作用