CLion проверяет и внешнее объявление класса C ++ без конструктора по умолчанию

У меня есть рабочий класс, как пример:

// MyClass.h

class MyClass {
public:

explicit MyClass(unsigned char enablePin);

void enable(bool enable);

private:
const unsigned char mEnabePin;
};

// MyClass.cpp

#include "MyClass.h"#include <gpio.h>

MyClass::MyClass(unsigned char enablePin)
: mEnabePin(enablePin) {
}

void MyClass::enable(bool enable) {
gpio_set(mEnabePin, static_cast<unsigned char>(enable ? 0 : 1));
}

Тогда у меня в другом файле extern объявление одного экземпляра этого класса:

// main.h

extern MyClass myClass;

и, конечно, фактическое определение в одном .cpp файл:

// main.cpp
#include "main.h"#include <Board.h>

MyClass myClass(Board::Pins::MYCLASS_ENABLE_PIN);

int main() {
// ...
myClass.enable(true);
}

Компилируется без предупреждений с -Wall -Wextra и тоже хорошо работает.

Однако кажется, что CLion 2017.2.1 не получает должным образом extern декларация и всегда жалуется на:

введите описание изображения здесь

и предлагает мне эти намеренные действия:

введите описание изображения здесь

несмотря на то, что он распознает определение объявления, так как показывает красно-зеленые стрелки как Перейти к определению / объявлению ярлык.

Я мог бы отключить этот тип проверок, но они относятся к очень полезному набору проверок типов, то есть Несоответствие количества параметров функции которую я не хочу выключать.

введите описание изображения здесь

Кто-нибудь сталкивался с той же проблемой и нашел аккуратный обходной путь?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector