Как я могу вернуть несколько значений безопасным для DLL способом в C ++? - PullRequest
1 голос
/ 05 апреля 2011

Я хотел бы вернуть несколько значений безопасным для DLL способом на C ++.

Должен ли я использовать stuct / class?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Хотя ваш вопрос не очень понятен, вот несколько подсказок:

  1. Класс / структура предназначены для группировки вещей. Хотя структура, предназначенная для группировки всех возвращаемых значений, может быть создана, но она действительно зависит от того, насколько тесно связаны эти возвращаемые значения. Это скорее вопрос соблюдения соглашений и принципов ООП.

  2. Чтобы вернуть несколько значений, вы можете использовать указатели и ссылки. например, следующий прототип функции возвращает bool обычным способом, но принимает два указателя в качестве параметров. Объекты, на которые указывают эти указатели, могут быть изменены в функции вызываемого абонента, и, следовательно, могут быть возвращены несколько значений.

Прототип функции:

bool returnValues(int i, char* c, int* result);
0 голосов
/ 05 апреля 2011

Использование PIMPL идиомы:

В заголовке (безопасная поверхность dll):

class Type;

class MyClass
{
public:
  int GetNumberOfType();
  Type * GetValue(int i) { return this->values[i]; };
protected:
  Type ** values;
};

В источнике:

#include <Type.h> // common header to real definition and declaration
...