C++ 使用stringstream给了我一个分段错误

C++ 使用stringstream给了我一个分段错误,c++,segmentation-fault,genetic-algorithm,stringstream,C++,Segmentation Fault,Genetic Algorithm,Stringstream,我在搞遗传算法,决定尝试一种新的适应度函数格式。(现在非常琐碎) 这条线不使用权重(*3,*2等),它工作得很好(尽管它比我使用的慢)。当我加入权重时,我得到了一个分段错误。在它发生之前,程序甚至无法访问main()。 这怎么可能给我一个错误?据我所知,我没有试图访问任何我不拥有的内存。 我四处搜索,发现所有类似的问题都是由于指针超出范围造成的,但就我所知,这不是问题所在 有没有更好的方法来设置这个?我试过了 attack = genes [0]; 但这会将字符的ASCII码指定给攻击,而不是

我在搞遗传算法,决定尝试一种新的适应度函数格式。(现在非常琐碎)

这条线不使用权重(*3,*2等),它工作得很好(尽管它比我使用的慢)。当我加入权重时,我得到了一个分段错误。在它发生之前,程序甚至无法访问main()。 这怎么可能给我一个错误?据我所知,我没有试图访问任何我不拥有的内存。 我四处搜索,发现所有类似的问题都是由于指针超出范围造成的,但就我所知,这不是问题所在

有没有更好的方法来设置这个?我试过了

attack = genes [0];
但这会将字符的ASCII码指定给攻击,而不是值本身

下面是它所属的类的开头:

class Being
{
int id, var1, var2, var3, var4;
string genes;

public:
double fitness;

  Being()
{
    id = env.getcurid();
    var1 = 0, var2 = 0, var3  = 0, var4 = 0;
    genes = gengenes(DNASIZE);
    fitness = 0;
}
这里的任何帮助都将不胜感激


多谢各位

什么是基因?如何声明它?Calcfitness()是一个成员函数。基因和健康都属于生物类。我将把它添加到上面。
genes[0]-“0”
将从一个数字字符中给你一个数字,如果
genes[0]
不是一个数字字符,那么这个数字就会出错。@RetiredInja我不太清楚你的意思。喜欢攻击=基因[0]-“0”;?这看起来不合法。基因中除了数字之外,再也不会包含任何东西。它是使用随机数生成器生成的。在崩溃发生时,运行调试器会向您显示问题所在。
attack = genes [0];
class Being
{
int id, var1, var2, var3, var4;
string genes;

public:
double fitness;

  Being()
{
    id = env.getcurid();
    var1 = 0, var2 = 0, var3  = 0, var4 = 0;
    genes = gengenes(DNASIZE);
    fitness = 0;
}