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

配列は基本的にメモリの1つの領域であり、個々のポインタではなく数値ではないため、配列の[0]のアドレスを変更することはできません。

'isssue'は、** ..を使用して実行できます。次に、[0]に値へのポインターを格納させることができます。

于 2013-01-06T11:18:38.920 に答える
1

あなたの質問は主に、Xを達成するためのアプローチYで問題を解決する方法についてです。

アプローチ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 に答える
0

必要なのは、floatの配列ではなく、floatへのポインターの配列です。これを実現するには、次のように配列を宣言する必要があります

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 に答える