4

C++ で 2 次元配列を定義して使用しようとしています。

const float twitterCounts[][5] = {
        {1,0,0,0,0},
        {0,2,0,0,0},
        {0,0,3,0,0}
};

次のように返します。

const float ??? TwitterLiveData::data() {
    return twitterCounts;
}

そして、このように使用します

float x = TwitterLiveData::data()[1][1];

静的アクセサーの適切な署名は何ですか?

4

3 に答える 3

5

配列を返すことはできませんが、最初の要素へのポインターまたは配列への参照を返すことはできます。署名に正しいタイプを入れるだけです:

const float (*TwitterLiveData::data())[5] {

または多分

const float (&TwitterLiveData::data())[3][5] {
于 2012-04-25T18:15:39.300 に答える
3

参照:https ://stackoverflow.com/a/10264383/365496

まとめ:

#include <array>

const std::array<std::array<float,5>,3>
twitterCounts = {
        {1,0,0,0,0},
        {0,2,0,0,0},
        {0,0,3,0,0}
};

const std::array<std::array<float,5>,3>
TwitterLiveData::data() {
    return twitterCounts;
}

配列が高すぎる可能性があるため、値で配列を返したくない場合があります。代わりに、配列への参照を返すことができます。

const std::array<std::array<float,5>,3> &TwitterLiveData::data();

どちらの場合でも、目的の構文float x = TwitterLiveData::data()[1][1];が機能します。

于 2012-04-25T18:17:49.007 に答える
0

コンパイラによって異なりますが、ほとんどの場合、double 配列の名前は double ポインターとしてカウントされます。したがって、あなたの場合、twitterCounts は float** です。

于 2012-04-25T18:13:20.040 に答える