gpt4 book ai didi

c++ - Derived from two Bases - 删除 vector **奇怪**问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:43 25 4
gpt4 key购买 nike

<分区>

我花了几个小时试图找出问题出在哪里,但它看起来很奇怪。

我以更容易理解的方式重写了我的问题。

当它到达它说删除的行时,调试程序会创建一个断点。

附言。有趣的是,如果我们采用 int b1 并将其移动到 Base2,它就可以工作。

基数 1:

#pragma once
class Base1
{
public:
Base1();
~Base1();
int b1;
};

Base2.h:

#pragma once
#include <iostream>
#include <vector>
class Derived;
class Base2
{
public:
Base2();
~Base2();
std::vector <std::vector <Base2*>> vec;
void doSomething(Derived& d);
};

Base2.cpp:

#include "Base2.h"
#include "Derived.h"


Base2::Base2()
{
//the numbers 1 and 5 does not really metter
vec.resize(1);
vec[0].resize(5);
}


Base2::~Base2()
{
}

void Base2::doSomething(Derived& d)
{
vec[0][d.b1] = new Derived();
delete vec[0][d.b1];
}

派生:

#pragma once
#include "Base1.h"
#include "Base2.h"
class Derived : public Base1, public Base2
{
public:
Derived();
~Derived();
};

主要内容:

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

int main()
{
Derived d;
d.b1 = 1;
d.doSomething(d);
}

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