gpt4 book ai didi

c++ - 是否在C++头文件中声明类属性?

转载 作者:行者123 更新时间:2023-12-02 09:49:28 26 4
gpt4 key购买 nike

作为C++的初学者,我经常发现自己在头文件中声明类属性时挣扎,这些声明不仅需要名称,还需要更多信息,例如其他带有构造函数的类的数组对象

这是一个例子

SomeClass.h:

#include "OtherClass.h"

class SomeClass {

int num; // works fine
float arr[]; // produces an error because size is not declared

OtherClass obj; // produces an error because the constructor parameters are not passed in

public:
void setup();
void update();

};

SomeClass.cpp:

#include "SomeClass.h"

void SomeClass::setup() {
num = 10; // easy peasy, works!
arr = float some_arr[5 * num]; // error

// Fill in the array
for (int i = 0; i < 5 * num; i += num) {
ass[i] = 12;
}

// Fill in the class attributes
obj = {120, 40}; // error

}

void SomeClass::update() {
// Update stuff
}

在数组 arr的情况下,如果我不知道在头文件中声明时的大小,该如何声明一个数组?

如何在头文件中声明带有构造函数的类对象,而不用在那时不传递未知参数?

谢谢。

最佳答案

如果您事先不知道数组大小,则可以使用C++中的动态分配功能。

首先声明您的数组变量如下

float *arr;

然后您可以分配所需的大小,如下所示
arr=new float[10]; 

取消分配内存
delete[] arr;

如果要动态分配对象,则声明类为
ClassName *obj;

然后分配使用
 obj=new ClassName(your_parameters);

然后您可以使用删除它
delete obj;

小费:
取消分配内存后,始终使指针变量为NULL是一个好习惯。
做arr = NULL;和obj = NULL;取消分配后

关于c++ - 是否在C++头文件中声明类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61439837/

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