makroinstrukcja - niezrozumiałe ćwiczenie

0

Witam, mam problem ze zrozumieniem sensu pewnego ćwiczenia z książki Thinking in C++ (rozdział 9, ćwiczenie 18). Oto ono:

Zmodyfikuj makroinstrukcję FIELD() w taki sposób, aby zawierała dodatkowo numer indeksowy. Utwórz klasę, której składowe zostaną utworzone za pomocą wywołań makroinstrukcji FIELD(). Dodaj funkcję składową, pozwalającą na dostęp do pola, utworzonego za pomocą makroinstrukcji na podstawie jego numeru indeksowego. Napisz funkcję main(), umożliwiającą przetestowanie tej klasy.

Ćwiczenie dotyczy makroinstrukcji FIELD() o postaci:

#define FIELD(a) char* a##_string; int a##_size

class Record {
  FIELD(one);
  FIELD(two);
  FIELD(three);
};

Nie chodzi o samo rozwiązanie ćwiczenia, co o wyjaśnienie co autor miał na myśli pisząc numer indeksowy. Bez tego naprawdę trudno jest zabrać się za ćwiczenie, które na pewno jest banalne...

Z góry dziękuję za pomoc. W razie problemów z serwerem proszę o kontakt mailowy.

0

ja sądze że chodzi o coś takiego:

#define FIELD(a, index) char* a##_string_##index; int a##_size_##index;

Autorowi chodziło o to by można różnicować nazwy pól nie tylko przez człon a ale także przez indeks, i mieć mola postaci:

char* one_string_1;
int one_size_1;
0

Dzięki za odpowiedź.

Zakładając, że podane przez Ciebie rozwiązanie jest prawidłowe, jak wyobrażasz sobię wykonanie drugiej części ćwiczenia?

Dodaj funkcję składową, pozwalającą na dostęp do pola, utworzonego za pomocą makroinstrukcji na podstawie jego numeru indeksowego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1