Как вы можете видеть в следующем коде, я пытаюсь использовать некоторые аргументы по умолчанию функции «инициализировать», которые являются объединением. Как изменить определение функции «инициализировать», чтобы сделать ее совместимой с С++ до С++ 11? Нужно ли добавлять некоторые конструкторы в RedBlackPointer? Если да, то как?
template <typename T> class RedBlackNode{
protected:
union RedBlackPointer{
RedBlackNode *node;
struct{
unsigned value:1; // for color / other info
}flag;
}left, right, parent;
T key;
public:
void initialize(T key, RedBlackPointer left = {(RedBlackNode*)0},
RedBlackPointer right = {(RedBlackNode*)0},
RedBlackPointer parent = {(RedBlackNode*)0}){
this->key = key;
this->left = left; this->right = right;
this->parent = parent;
}
}
node
иvalue
одновременно, поэтому вам не следует использовать объединение для этой цели. - person ciechowoj   schedule 21.03.2015