Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - TrinityCoder

Stran: [1]
1
Vývoj / Re:Qt - potomkovia QObject a auto
« kdy: 23. 10. 2021, 20:26:57 »
Ahojte, začal som sa venovať vývoju pre Unix a KDE. Chcel by som spraviť nejaké Qt GUI utilitky / aplikácie pre veci špecifické pre FreeBSD a Solaris. Lenže Qt si jazyk C++ troška ohýba, tak že sú tam mierne odlišnosti oproti bežnému C++. Celkový dojem z toho mám akoby som kódil v jazyku C# alebo Jave, ale zase daktoré veci mi prídu dosť archaické nepoužíva sa tam v takej miere preťažovanie operátorov, namiesto smart pointerov vidím vo vygenerovanom kóde z QtDesigneru natívne pointery a operátor new atď.

No a zarazila ma jedna vec:

Objekty podedené od QObject musím inštanciovať po starom (z ľava do prava):

Kód: [Vybrat]
QObject instance;
Ale keď to inštanciujem takto:

Kód: [Vybrat]
auto instance = QObject();
Tak mi to vyhodí takúto chybu:

http://pluton.cloud/attachment/8f4d3a81-5d3e-4403-bc3b-899b56f55579/issue.png

Prečo?

Evidentně kompilátor bere
Kód: [Vybrat]
auto instance = QObject(); jako copy initialization a chce použít copy constructor, který je ovšem v qobject.h na řádku 467 definovaný jako deleted. Naopak:

Kód: [Vybrat]
QObject instance;
je default initialization (https://en.cppreference.com/w/cpp/language/default_initialization), při které se copy constructor neuvažuje. Nicméně v C++17 už je to jinak a myslím, že tam už by se zkompilovala i první varianta.

Stran: [1]