gpt4 book ai didi

c++ - 在 for 循环中使用变量,导致段错误

转载 作者:行者123 更新时间:2023-11-28 01:20:10 25 4
gpt4 key购买 nike

<分区>

我正在练习运算符重载,我的目标是枚举我自己编写的 vector 类的所有值。

在这样做的过程中,我遇到了一个段错误(没什么大不了的)并开始削减我的代码以找到它的起源。遇到一些困难后,我已经到了不明白哪里出了问题的地步。

在尝试运行 for 循环以遍历 vector 对象中的数据时,我发现如果我使用设置为 10 的变量 s 会出现段错误。如果我使用整数文字 10,它有效。

这对我来说意义不大,但话又说回来,我正在处理不熟悉的概念。感谢您的帮助!

这是一个 MCVE:

使用g++ Q1.cpp vector.h -o Q1编译

演示类(Q1.cpp):

#include <iostream>
#include "vector.h"

#define INFO(x) std::cout << "[INFO]: " << x << std::endl;

int main(void) {
// 1- Test the default constructor
INFO(" ---------- Vector 1 ----------");
vector v1;
INFO(v1);

return 0;
}

vector 类(vector.h):

#include <iostream>
#include <string>

class vector {
public:
float size;
float* data;

vector() : vector(0) {}

vector(int s){
size = s;
data = new float[size]();
}
};

std::ostream& operator<<(std::ostream& stream, const vector& obj){
stream << "vector: size(" << obj.size << ")" << "\n";

int s = 10;

for(int i = 0; i < s; ++i){ // problem occurs here, replace s with '10' and it works.
stream << i;
//stream << "data[" << i << "] = " << obj.data[i];
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com