Behöver skriva OOP i C programmering - Några förslag?
Jag vill översätta lite enkel C++ kod som innehåller objekt och vektorer. Då hade jag tänkt att om jag skapar ett små funktioner som kan hantera objekt. Då borde jag kunna lösa detta problem.
C++ koden är enkel. Den är största delen C kod, men den innehåller vissa objekt och vektorer.
Jag är inte behov utav inkapsling (encapsulation) och arv inom OOP. Jag är mer intresserad utav polymorphism.
Låt oss säga att vi skulle göra en länkad lista i C och den ska kunna ta in ett argument som är en struktur. Jag har tänkt att använda strukturer som objekt.
Hur skulle ni ha gjort om ni vill göra:
Länkad lista som en vektor
Använda strukturer som objekt
Polymorphism i strukturen
I C?
Målet jag vill uppnå är att typ skriva om enkel C++ kod, som är i största delen C kod, men innehåller vissa funktionaliteter som C saknar.
En vanlig lösning är väl att skriva ett litet mellanlager i c++ som exponerar ett (troligen förenklat) c-gränssnitt som den andra applikationen kan använda?
En vanlig lösning är väl att skriva ett litet mellanlager i c++ som exponerar ett (troligen förenklat) c-gränssnitt som den andra applikationen kan använda?
Det är OpenCV som jag behöver lite kod utav. Nu när jag läser OpenCV's kod...Mycket "TODO..." och "Not optimized yet...".
Koden går att översätta, men jag tror det blir nog mer optimalt om jag skriver egen C kod.
Det blir mer portabelt och jo, det blir snabbare om jag skriver projekt i C än C++, generellt talat.
Med C så tänker man hela tiden på minnet. I C++ så löser man problemet bara.
Det blir mer portabelt och jo, det blir snabbare om jag skriver projekt i C än C++, generellt talat.
Med C så tänker man hela tiden på minnet. I C++ så löser man problemet bara.
Det är ju i så fall ett val du har gjort när du skrev din kod. Det är inte för C är effektivare än C++, eller hur? Jag har svårt att se att programmet skall bli effektivare för att du bygger ett hemsnickrat OOP-lager i C. Att konvertera saker och ting som skall skickas in till OpenCV och det som returneras, det kostar både cykler och minne (dubbelallokering).
På din önskelista stod:
* Länkad lista som en vektor
Det går fint i C++. Allocators och placement new ger dig ganska bra kontroll på minneshanteringen.
* Använda strukturer som objekt
Strukturer är object i C++.
* Polymorphism i strukturen
Den vanliga metoden att hantera polymorfism är att låta strukturen innehålla ett par funktionspekare eller en pekare till en tabell med funktionspekare. Detta sköter C++-kompilatorn åt dig utan att du behöver bry dig.
Men om du tror dig kunna göra ett bättre jobb än C++-kompilatorn så gör ett försök. Det är din tid du spenderar. Rapportera gärna hur mycket snabbare det gick, hur mycket tid det tog och om du tyckte att det var värt mödan.