🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by szykcech Fri, 04 Jan 2019 20:29
Czy takie cuda są w ogóle możliwe w C++?!?
#309797
Author: szykcech
Date: Fri, 04 Jan 2019 20:29
22 lines
3100 bytes
Witam

[Wprowadzenie]
W QPlainTextEdit jest coś takiego jak blok (normalnie 1 linia tekstu). Blok może mieć zmienną dziedziczoną po QTextBlockUserData.
Problem w tym, że chcę użyć biblioteki KSyntaxHighlighting z Kde (teraz robią ze wszystkiego moduły, tak, że można sobie stosować różne części Kde w swoich projektach). Główny argument za tą biblioteką jest wsparcie dla kolorowania ponad 200 rodzajów plików.

[Problem]
KSyntaxHighlighting ma klasę SyntaxHighlighter która korzysta z QTextBlockUserData, jest to klasa TextBlockUserData.
I teraz ja chcę rozszerzyć klasę TextBlockUserData w ten sposób:
class SyntaxHighlighterLineInfo : public TextEditor::EditorLineInfo, KSyntaxHighlighting::TextBlockUserData

Chodzi o to, że TextEditor::EditorLineInfo jest znane mojemu edytorowi, ale całkowicie nie znana jest mu klasa kolorująca składnię (SyntaxHighlighter z Kde).

I teraz chcę rzutować TextEditor::EditorLineInfo na QTextBlockUserData. Ale to nie za bardzo chce działać... Rzutowanie dynamic_cast zgłasza, że TextEditor::EditorLineInfo nie jest polimorficzną klasą (bo nie jest), static_cast zgłasza błąd, że klasy nie są powiązane dziedziczeniem.
reinterpret_cast nie zgłasza błędu ale wywala program przy próbie użycia obiektu jako QTextBlockUserData. Podobnie jak klasyczne rzutowanie w C.

[Motywacje]
Dla mnie bardzo ważne jest by mieć jednoczesne zachowanie mojego TextEditor::EditorLineInfo, KSyntaxHighlighting::TextBlockUserData i QTextBlockUserData. Jednak z zastrzeżeniem, żeby mój edytor (potomek QPlainTextEdit) nic nie wiedział o klasie SyntaxHighlighter z KSyntaxHighlighting.
Dlatego, że chcę mieć program modułowy, gdzie pluginy (m. in. z edytorami i kolorowaniem składni) można wymieniać osobno bez oglądania się na zbędne powiązania.

z góry dzięki i 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