возвращая int с int * - PullRequest
       29

возвращая int с int *

0 голосов
/ 14 декабря 2018
class A {
  private:
    int* count = NULL;
  public:
    A() {
      count = NULL;
    }
    int getCount() {
      return *count;
    }
};

Существует простая проблема при возвращении типа int с моей переменной типа int*.Когда я пишу A a(); и запускаю a.getCount();, это вызывает ошибку сегментации.Но я не понимаю почему.Я неправильно понимаю концепцию указателя ..?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы должны получить ошибку сегментации в return *count;. Почему? .Это потому, что вы пытаетесь отменить ссылку на переменную-указатель (*count;), значение которой по-прежнему равно NULL (не указывая ни на что);

Вы должны переписать

int getCount() 
{
   return *count;
}

as

int getCount() 
{
   if (count != NULL)
      return *count;
   return 0; // 0 or -1 other any other value depends on your code logic.
}

Другим способом вы можете также инициализировать значение count в конструкторе некоторым value.

A() 
{
   *count = 0; // 0 or -1 other any other value depends on your code logic.
}
0 голосов
/ 14 декабря 2018

Вы должны указать указатель на что-либо, прежде чем сможете разыменовать его.

...