Abel csoport abstract class-szal

 ( hunludvig | 2009. október 14., szerda - 11:12 )

Szeretnék segítséget kérni, olyan embertől aki járatos a c++ pure virtual metódusainak illetve a templatek világában.
Szeretnék írni egy algoritmust mely, abel csoportokkal dolgozik (ElGamal séma), valamint implementálni különböző abel csoportokat, melyekkel futhat az algoritmus. Az Abel csoportnak levést szeretném valahogyan megfogni.
Az az ötletem, hogy az Abel csoport-elem legyen egy ősosztály, amiben benne van a +,-1*,... műveletek, ebből örököltetem az egyes valódi csoport-elemeket. Viszont ekkor az + operátor öröklődés miatt kell hogy működjön nem azonos csoportbeli elemek között is. A template-ek használata megoldaná a helyzetet, de szeretném futásidőben is meghatározni a csoport paramétereit, tehát nem működik.
Fontos, hogy legyen típushelyes a programom.
Előre is köszönöm.
A

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nézd meg a GAP-ot.

http://www.gap-system.org/

--
Ami elől menekülsz, az után szaladsz.

én ugyan nem vagyok járatos ilyesmiben, de a GiNaC írói bizonyára:

"GiNaC is a C++ library. It has been developed to become a replacement engine for xloops which in the past was powered by the Maple CAS. Its design is revolutionary in a sense that contrary to other CAS it does not try to provide extensive algebraic capabilities and a simple programming language but instead accepts a given language (C++) and extends it by a set of algebraic capabilities. The name GiNaC is an iterated and recursive abbreviation for GiNaC is Not a CAS, where CAS stands for Computer Algebra System."

ilyesmit lehet csinálni benne:

If you are doing some very specialized things with GiNaC, or if you just need some more organized way to store data in your expressions instead of anonymous lists, you may want to implement your own algebraic classes. (’algebraic class’ means any class directly or indirectly derived from basic that can be used in GiNaC expressions).

GiNaC offers two ways of accomplishing this: either by using the structure template class, or by rolling your own class from scratch. This section will discuss the structure template which is easier to use but more limited, while the implementation of custom GiNaC classes is the topic of the next section.

However, you may want to read both sections because many common concepts and member functions are shared by both concepts, and it will also allow you to decide which approach is most suited to your needs. The structure template, defined in the GiNaC header file ‘structure.h’, wraps a type that you supply (usually a C++ struct or class) into a GiNaC object that can be used in expressions.

Továbbiak: http://www.ginac.de/

Üdv
VJ

Köszönöm a válaszokat, a Gapet ismertem, sajnos nekem egyik sem tűnik kifejezetten objektum orientált környezetnek (Encasulation).