0

我有一个小问题,不太了解我想要做的语法。见下文:

float* ParticleSystem::GetMinLifeTime()
{
    return &minLifeTime;
}

我想声明一个动态数组,然后将元素 0 的值更改为指向 minLifeTime 内存位置。到目前为止,我的尝试是:

float* lifeTimeNumbers = new float[LIFETIME_STRINGS_SIZE];


lifeTimeNumbers[0] = *activeParticleSystem->GetMinLifeTime();

不过我的理解是,我在将它们添加到数组时取消引用这些值。这不是我想要的。我真的很想将 lifeTimeNumbers[0] 的内存位置更改为 GetMinLifeTime() 返回的内存位置。我能做这样的事吗?

干杯

4

4 回答 4

1

您的问题主要是关于如何使用 Y 方法解决问题以实现 X。

方法 Y 真的毫无意义(这被称为XY 问题)。

不要专注于 Y,而是直接做 X:

#include <vector>

double ParticleSystem::minLifeTime() const
{
    return minLifeTime_;
}

int main()
{
    std::vector<double> lifeTimeNumbers;

    ParticleSystem activeParticleSystem = ...;
    lifeTimeNumbers.push_back( activeParticleSystem.minLifeTime() );
}
于 2013-01-06T11:20:08.023 回答
1

您不能更改数组 [0] 的地址,因为数组基本上是一个内存区域,而不是数字而不是单个指针。

您的“问题”可以使用 **.. 来完成,然后您可以让 [0] 存储指向该值的指针

于 2013-01-06T11:18:38.920 回答
0

你想要的是一个指向浮点数的指针数组,而不是一个浮点数数组。为此,您必须像这样声明数组

float** lifeTimeNumbers = new float*[LIFETIME_STRINGS_SIZE];
lifeTimeNumbers[0] = activeParticleSystem->GetMinLifeTime();

但为什么不只使用这样的矢量容器

std::vector<float*> vec;
vec.push_back(activeParticleSystem->GetMinLifeTime());
于 2013-01-06T12:22:37.633 回答
0

我真的很想将 lifeTimeNumbers[0] 的内存位置更改为 GetMinLifeTime() 返回的内存位置

您需要做的就是:

float *lifeTimeNumbers = activeParticleSystem->GetMinLifetime();

现在你有一个指向数组第一个元素的指针。

于 2013-01-06T11:18:47.903 回答