да это все хорошо, я знаю что интернет бесконечен и в нем море полезной информации, только вот один пишет одно, второй другое и каждый прав по своему. Послушаешь одного и потом пожалеешь, не послушаешь и может даже никогда не пожалеешь...
Сама идеология каких-то там конструкторов по умолчанию порочна и то что придумали какой-то новый костыль в виде мудрецкого ключевого слова (причем не самого удачного) говорит о многом.
Это ключевое слово может быть нормально переварено в последней студии, но вы не поверите сколько в природе существует еще других компиляторов. При этом их никто и никогда не будет уже модифицировать...
Ну тут это можно сказать практически о любом языке и о любой программе.
Вот тут можно подробнее, про интересные эффекты, уж больно они надоели :)
class TLibrary
{
public:
TLibrary(const char *LibName)
: m_handle(LoadLibrary(LibName), &FreeLibrary)
{
if (!m_handle)
throw Exception("Can't load library");
}
virtual FARPROC getProcAddress(const char *ProcName)
{
if (auto addr = GetProcAddress(m_handle.get(), ProcName))
return addr;
throw Exception("Can't find func");
}
private:
std::unique_ptr<HINSTANCE, decltype(&FreeLibrary)> m_handle; // shared_ptr?
};
connect(componentName, // Имя компонента должно быть доступно в конструкторе, а поиск может вернуть nullptr, если имя объекта изменилось
&QPlainTextEdit::textChanged, [this] {
Bus::Instance().setMessage(componentName->toPlainText().toStdString());
});