スーパークラスコンストラクタを呼び出して、それに直接 "MyStruct"構造体の配列を与えたいと思います。私はこれを以下に実証しようとしました。メインメソッドでは、構造体で "Foo"のインスタンスを作成していますが、これは "Bar"クラスの内部のスーパークラスコンストラクタでは機能しません。どのようにこれを正しく達成することができますか?スーパークラスコンストラクタ内の構造体配列の初期化
struct MyStruct
{
int x;
int y;
};
class Foo
{
private:
MyStruct* m_MyStructArray;
int m_MyStructLength;
public:
Foo(MyStruct* myStructArray, int myStructLength)
: m_MyStructArray(myStructArray), m_MyStructLength(myStructLength) {}
~Foo() {}
const MyStruct* getMyStructArray() { return m_MyStructArray; }
int getCount() { return m_MyStructLength; }
};
class Bar : Foo
{
public:
Bar()
: Foo((MyStruct*) { {10, 10}, { 10, 10 } }, 2) {} //This doesn't work obviously
~Bar() {}
};
int main() {
MyStruct myStructs[] = {
{ 10, 10 },
{ 20, 20 },
};
Foo foo(myStructs, 2);
}
おそらく、静的配列を作成し、そのポインタを 'Foo'に転送する必要があります。 – vu1p3n0x
'm_MyStructArray'は配列ではなくポインタであると考えてください。 – juanchopanza
@ vu1p3n0xええと...はい、それについても考えましたが、あまり優雅ではありません。別の解決策がない場合は、私はそうするでしょう。 – wuppie367