我遇到了一个小问题,并且不太了解我想要做的事情的语法。见下文:
float* ParticleSystem::GetMinLifeTime()
{
return &minLifeTime;
}
我想声明一个动态数组,然后将元素0的值更改为指向minLifeTime内存位置。到目前为止我的尝试是:
float* lifeTimeNumbers = new float[LIFETIME_STRINGS_SIZE];
lifeTimeNumbers[0] = *activeParticleSystem->GetMinLifeTime();
我的理解是,我在将它们添加到数组时取消引用这些值。这不是我想要的。我真的想将lifeTimeNumbers [0]的内存位置更改为GetMinLifeTime()返回的内存位置。我能做这样的事吗?
干杯
答案 0 :(得分:1)
你不能改变数组[0]的地址,因为数组基本上是一个内存区域,而不是一个数字而不是单个指针。
您的'isssue'可以使用**来完成..然后您可以[0]存储指向值的指针
答案 1 :(得分: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() );
}
答案 2 :(得分:0)
我真的想将lifeTimeNumbers [0]的内存位置更改为GetMinLifeTime()返回的内存位置
您需要做的就是:
float *lifeTimeNumbers = activeParticleSystem->GetMinLifetime();
现在你有一个指向数组第一个元素的指针。
答案 3 :(得分:0)
你想要的是一个指向浮点数的指针数组,而不是一个浮点数组。要实现这一点,你必须像这样声明数组
float** lifeTimeNumbers = new float*[LIFETIME_STRINGS_SIZE];
lifeTimeNumbers[0] = activeParticleSystem->GetMinLifeTime();
但为什么不使用像这样的矢量容器
std::vector<float*> vec;
vec.push_back(activeParticleSystem->GetMinLifeTime());