Структура маршала с целочисленными ссылками на C # - PullRequest
1 голос
/ 30 сентября 2011

Привет. Я пытаюсь создать и упорядочить следующую структуру из C # в C ++ и сохранить ссылку на нее. Я не уверен, как эта структура должна быть определена в C #? В C ++ структура должна выглядеть так, как показано ниже, с сохранением ссылки на const.

// C++
struct {
        int   a;       // my value
  const int&  b = a;   // my reference to a
}

Кто-нибудь знает, возможно ли это?

Спасибо.

Edit:

Это более репрезентативно для того, что я пытаюсь выполнить, и, как указал @Hans, это не разрешенный C ++, но, возможно, кто-то может предложить лучший путь? system_t генерируется в C ++ или C # и передается в C ++. Мое лучшее предположение: (если это даже хороший шаблон проектирования) - инициализировать все ссылки в конструкторе system_t в C ++. Что касается маршалинга из C #, это будет сложно.

struct system_t
{
  float    sysSampleRate = 112500.0f;            // Sample rate from receivers.
                                                 // Illegal statement @Hans

  struct tvg_t  // tvg_t is passed to tvg processor 
  {
          float    tvgLinearGain;
    const float&   tvgSampleRate = sysSampleRate;   // Get the rate from system.
                                                    // Illegal statement @Hans
  } tvg;   // Nested tvg_t in system_t.

  //... Many other structures and variables ..//
};

Я бы хотел найти правильный шаблон проектирования, а не отказываться от него и переходить к плоской структуре или передавать system_t каждому модулю.

1 Ответ

1 голос
/ 30 сентября 2011

Это должно работать:

[StructLayout(LayoutKind.Sequential)]
public struct MyCStruct {
  public int a;
  public IntPtr b;
}
...