Malloc в конструкторе C ++ - PullRequest
       4

Malloc в конструкторе C ++

5 голосов
/ 10 октября 2010

Я должен взаимодействовать с некоторым кодом C из конструктора классов C ++ (библиотека Intel)


  class A{
    A{
     x = ippiMalloc();
     if(x==NULL) ...
    }
  }

В конструкторе используется функция malloc (версия intel). Если функция ippiMalloc не удалась, как правильно ее обработать. Кинуть исключение?

Ответы [ 3 ]

8 голосов
/ 10 октября 2010

Да, исключение, вероятно, будет наиболее подходящим способом обработки ошибки здесь - по крайней мере, это будет самый чистый способ.Это также то, что оператор «new» будет делать в случае сбоя.

Если ваше приложение не знает об исключениях, у вас есть проблема.В этом случае метод фабрики в классе может иметь смысл.

static A * create() { ... }

Здесь вы можете обернуть это в программу без исключений, которая, вероятно, вернет ноль, если вы не можете создать объект.

4 голосов
/ 10 октября 2010

Прежде всего, добавьте скобки в конструктор :) И да, я бы проголосовал за создание исключения, потому что альтернативы не очень приятны, например, установка некоторого bool в классе, например, object_state_is_not valid или что-то в этом роде.

1 голос
/ 10 октября 2010

Объединение предыдущих ответов - и здесь - хорошее объяснение того, почему исключения - лучший способ обработки ошибок в конструкторах.(C ++ FAQ Lite)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...