Thread View: pl.comp.lang.c
1 messages
1 total messages
Started by Szyk Cech
Thu, 30 May 2019 14:26
Właściwości w C++ - takie potrzebne i proste ale czy ktoś to stosuje?!?
Author: Szyk Cech
Date: Thu, 30 May 2019 14:26
Date: Thu, 30 May 2019 14:26
52 lines
2796 bytes
2796 bytes
Witam
Programując mostek z C++ do Qml-a wystawiający klasę z 10 zmiennych C++
wklepałem 300 linii kodu (bo w końcu w Qml jest dużo łatwiej). I naszła
mnie refleksja, że już od C++98 można było implementować właściwości
klas (tak jak np. w Dephi/C++ Builder). Postanowiłem się dziś zmierzyć z
tematem i zakodowałem to, wynik tu:
https://github.com/SzykCech4/EnergoKodProperty/blob/master/Include/EnergoKodProperty/Property.h
Test tej klasy jest tu:
https://github.com/SzykCech4/EnergoKodProperty/blob/master/Tests/Src/Main.cpp
Cały projekt (czysty C++ budowany Cmake), tu:
https://github.com/SzykCech4/EnergoKodProperty.git
Zalety:
1. Da się.
2. Wydaje się działać prawidłowo w podstawowych zastosowaniach.
Wady:
1. Z jakichś podejrzanych powodów typ int jest lepiej traktowany niż
std::string jeśli chodzi o dopasowywanie operatorów:
np. +=
To działa:
lObject.mIntProperty += 1;
A to już nie:
lObject.mStringProperty += std::string(" A to dopiero!!!"); // Failed
with g++
Konieczne jest tu rzutowanie:
static_cast<std::string&>(lObject.mStringProperty) += " A to dopiero!!!";
Podobnie jest ze strumieniami <<:
To działa bez problemu:
std::cout << "Final int value: " << lObject.mIntProperty << std::endl;
A to już nie:
std::cout << "Final string value: " << lObject.mStringProperty <<
std::endl; // Failed with g++
Konieczne jest takie rzutowanie:
std::cout << "Final string value: " <<
static_cast<std::string>(lObject.mStringProperty) << std::endl;
Jak ktoś ma pomysł jak rozwiązać problem dopasowywania operatorów dla
std::string to zapraszam na github.com
pozdro
Szyk Cech
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads