Matrix van waarden binnen een ENUM?

Ik heb deze code

enum type {NOTHING, SOMETHING, SOMETHINGELSE}
type *x;

Op dit moment gebruik ik x [765] == IETS bijvoorbeeld: Hoe zou ik andere waarden opslaan, bijvoorbeeld

x[765] == SOMETHINGELSE;
x[765].position == 43.5;
x[765].somevar == 12;

Ik verontschuldig mij voor mijn slechte bewoordingen in mijn vraag. Ik ben net begonnen in C ++, ik weet wat ik wil, ik weet alleen niet zeker hoe ik het moet vragen.

Bedankt.

0
Als je net begint, kan ik een van de mooie inleidende boeken op de boekenlijst voorstellen? stackoverflow.com/questions/388242/& hellip;
toegevoegd de auteur Mark B, de bron
== is de vergelijkingsoperator. Als u de toewijzingsoperator wilt, is dat een enkele = .
toegevoegd de auteur Troubadour, de bron
Ik realiseer me dit, het is alleen voor demo-doeleinden om een ​​voorbeeldwaarde te laten zien :)
toegevoegd de auteur Elgoog, de bron

5 antwoord

Het lijkt erop dat je op zoek bent naar een manier om 'kennis' te structureren; dit wordt gedaan met een struct of een klasse:

#include 

struct Info {
   enum thingness { nothing, something };

  //'member' variables
   thingness howMuch;
   int a_counter;
   float position;
};

int main(){
  Info object;
  object.howMuch=Info::something;
  object.a_counter=1;
  object.position=5.4;

U kunt dit soort objecten in een container groeperen - meestal een std :: vector :

 //a container of InterestingValues
  std::vector container(300);

  container[299].howMuch=Info::nothing;
  container[299].a_counter=4;
  container[299].position = 3.3;

 //or assign rightaway:
  container[2] = object;
}
2
toegevoegd
ja - ik heb #include statements niet toegevoegd. Ik zal ze nu toevoegen.
toegevoegd de auteur xtofl, de bron
Mijn compiler is terug: error: object noemt geen type
toegevoegd de auteur Elgoog, de bron

Je zult jezelf een complexer type moeten maken:

struct type
{
    enum flag_type
    {
        NOTHING, SOMETHING, SOMETHINGELSE
    } flag;
    double position;
    int somevar;
};

and later have an array of this new type.

1
toegevoegd

Get yourself a good book to learn from. A list of good books is available here: The Definitive C++ Book Guide and List

In C ++, vraagt ​​u hoe u een reeks structuren declareert. Probeer dit:

struct type {
    double position;
    int somevar;
};

type *x;
x[765].position = 43.5;
x[765].somevar = 12;
1
toegevoegd

Een enum is in principe een vervangbaar label voor een int. U moet een struct of een klasse definiëren.

struct type
{
   float position ;

};

type var;
var.position = 3.4;
0
toegevoegd

Uw type-opsom moet deel uitmaken van een klas, samen met de andere velden. Bijvoorbeeld,

class MyType
{
public:
    type t;
    double position;
    int somevar;
};

Met een array van MyType exemplaren

MyType *x;

je zou dan kunnen doen wat je verwacht verwacht dat je zou moeten doen

x[765].t = SOMETHINGELSE;

toewijzen aan het enum.

0
toegevoegd