可能重复:
c++ publicly inherited class member cannot be used as default argument
Nonstatic member as a default argument of a nonstatic member function
LinkedInteger accessElement(int index, LinkedInteger *startElement=&DataArray[0]){ // Starting at *startElement*, returns the element which is at the index of *startElement+index
LinkedInteger NullElement;
if (index<0){
cout << "Index degeri sifirdan buyuk olmalidir" << endl;
NullElement.value=0;
NullElement.nextPtr=0;
return NullElement;
}
for (int i=0; i<index; i++){
if (startElement->nextPtr == NULL){ // Last elements index is null.
cout << " Erismeye calistiginiz eleman dizi sinirlarinin disindadir " << endl;
NullElement.value=0;
NullElement.nextPtr=0;
return NullElement;}
else {
startElement=startElement->nextPtr;
}
}
return *startElement;
}
这是一种在c ++中实现链接列表的方法,它只是允许访问列表元素 我想将标题作为默认参数(实际上是DataArray [0])。 它失败是因为错误“无效使用非静态数据成员”。
this->&DataArray[0]
也失败了,因为“这可能不会在这种情况下使用”我该怎么办?
此外,代码的上下文也存在一些问题。请忽略它们。
答案 0 :(得分:5)
使用重载:
LinkedInteger accessElement(int index){
return accessElement(index, &DataArray[0]);
}
答案 1 :(得分:1)
尝试:
// 0 or NULL; your preference
LinkedInteger accessElement(int index, LinkedInteger *startElement = 0)
{
if (startElement == 0)
startElement = &DataArray[0]; // or just startElement = DataArray;
// ...
}
答案 2 :(得分:-1)
参数的默认值必须是静态已知的。您不能将运行时值用作默认参数。
后者失败了,因为它不是一个有效的语法,几乎没有任何意义。