gpt4 book ai didi

c++ - 类中的动态数组和指针很难找到定义它们的正确方法

转载 作者:行者123 更新时间:2023-11-28 03:28:49 27 4
gpt4 key购买 nike

我希望构造函数创建一个动态数组并将传递给构造函数的参数分配给数组的成员。

标题中的简化版本:

//in classes.h
#ifndef classes_h
#define classes_h
#include <iostream>
class Base{
int a,*var;
public:
Base();
Base(int);
~Base();
int func(int);
};
#endif

在 *.cpp 中:

//In classes.cpp
#incldue "classes.h"
Base::Base(int a){
var=new int[2];
var[0]=a;
var[1]=func(a);
}
Base::~Base(){
delete var;
}
int Base::func(int b){
return b++;
}
int main(){
Base obj(1);
return 0;}

我需要能够将该数组传递给一个函数,该函数将以某种方式修改它,但实际上我在定义数组时遇到了更多麻烦...

我没有从编译器或链接器中得到任何错误,但通过调试我得出的结论是问题出在数组的创建上。

我复习了 3 遍(或更多)指针、动态数组和类的基础知识,但无济于事。我希望我正在尝试做的事情实际上是可能的。如果不是,最接近的是什么?

最佳答案

你有两个问题:

  1. 您没有关注 Rule of Three .
  2. 您有一个未定义的行为

详细信息:

delete var;

应该是:

delete []var;

new 需要deletenew[] 需要delete [],错误导致未定义行为。

建议:

您应该使用 std::vectorstd::array 而不是动态 C 风格数组。它将为您省去所有的工作,并且不易出错。

关于c++ - 类中的动态数组和指针很难找到定义它们的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13172213/

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