为什么C ++不允许这个
void insertData (T data1,Tree<T> *tree=TreeTop);
传递值作为默认参数是允许的,但为什么不将变量作为默认参数.... ??
class BinaryTree
{
private :
Tree<T> *TreeTop;
unsigned int numberOfElements;
public :
void insertData (T data1,Tree<T> *tree=TreeTop);
// Only Prototype For Question Purpose
}
答案 0 :(得分:0)
你可以像这样过载:
void insertData(T data1) {
insertData(data1, TreeTop);
}
void insertData(T data1, Tree<T> *tree) {
// Code
}
答案 1 :(得分:0)
如果你将TreeTop设为静态,这将有效:
class BinaryTree
{
private :
static Tree<T> *TreeTop;
unsigned int numberOfElements;
public :
void insertData (T data1,Tree<T> *tree=TreeTop);
}
在这种情况下,它将是“insertData”方法调用的类级默认值。如果您想要实例级默认值,则必须执行类似
的操作class BinaryTree
{
private :
Tree<T> *TreeTop;
unsigned int numberOfElements;
public :
void insertData (T data1,Tree<T> *tree=NULL);
}
然后,在您的实施中,执行
public void BinaryTree::insertData(T data1, Tree<T> *tree)
{
if (tree==null) tree=TreeTop;
...
}