GDB пропускает мой код! - PullRequest
       7

GDB пропускает мой код!

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

Итак, я определил класс как

DataLoggingSystemStateReceiver
{
DataLoggingSystemStateReceiver()
:   // initializer list
{
    // stuff
}

//  ... other functions here

};

В основном я создаю экземпляр DataLoggingSystemStateReceiver следующим образом:

int main()
{
    // ... run stuff
    Sensor sensor(port, timer);

    DataLoggingSystemStateReceiver dlss();

    Log::notice("started");
    return 0;
}

Однако, когда я выполняю этот код в gdb, он запускается:

Sensor sensor(port, timer);

пропуски

DataLoggingSystemStateReceiver dlss();

и продолжается с

Log::notice("started");

Что дает?


РЕДАКТИРОВАТЬ: путем изменения

DataLoggingSystemStateReceiver dlss();

до

DataLoggingSystemStateReceiver dlss;

в main (), строка выполняется. Может кто-нибудь объяснить, почему?

1 Ответ

9 голосов
/ 05 апреля 2010

Это:

DataLoggingSystemStateReceiver dlss();

не объявляет автоматическую переменную. Он объявляет функцию с именем dlss, которая не принимает аргументов и возвращает DataLoggingSystemStateReceiver.

Вы хотите:

DataLoggingSystemStateReceiver dlss;

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

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