Рассмотрим следующий класс:
class SocialPrefNode{
public:
// Constructors & Destructor
SocialPrefNode( );
SocialPrefNode( char self, int ind, int link, bool stack, std::vector<SocialPrefNode*> pref,
std::vector<SocialPrefNode*> worse, std::vector<SocialPrefNode*> indiff );
SocialPrefNode( const SocialPrefNode& copy );
~SocialPrefNode( );
// Setters
void set_id( char self );
void set_index( int ind );
void set_lowlink( int link );
void set_onstack( bool stack );
void set_pref( std::vector<SocialPrefNode*> prefs );
void set_pref( SocialPrefNode& prefs );
void set_worse( std::vector<SocialPrefNode*> wrs );
void set_worse( SocialPrefNode& wrs );
void set_indiff( std::vector<SocialPrefNode*> indiff );
void set_indiff( SocialPrefNode& indiff );
// Getters
char get_id( ){ return id; }
int get_index( ){ return index; }
int get_lowlink( ){ return lowlink; }
bool get_onstack( ){ return onstack; }
std::vector<SocialPrefNode*> get_preferences( ){ return preferences; }
std::vector<SocialPrefNode*> get_worse( ){ return worsethan; }
std::vector<SocialPrefNode*> get_indiff( ){ return indifference; }
// Operators
SocialPrefNode& operator=( const SocialPrefNode& copy );
private:
char id{ };
int index{ };
int lowlink{ };
bool onstack{ };
std::vector<SocialPrefNode*> preferences{ };
std::vector<SocialPrefNode*> worsethan{ };
std::vector<SocialPrefNode*> indifference{ };
};
std::ostream& operator<<( std::ostream& os, SocialPrefNode& node );
Вопрос: Есть ли способ перегрузить / переопределить / переопределить индексный оператор s.t. например, можно иметь доступ к выбранному вектору из трех вариантов.
Т.е., предположим: SocialPrefNode ordering{ }
. Я хочу иметь возможность использовать оператор индекса, как в ordering[ i ]
И , чтобы иметь возможность выбрать один из трех векторов в классе, для которого индекс / индекс i будет работать.
Пример: каждый хочет получить доступ к третьему элементу в векторе preferences
для SocialPrefNode ordering
. Затем каждый ordering[ 2 ]
и, таким образом, имеет доступ к нужному элементу.