class bst
{
private:
typedef struct nod
{
int data;
nod* left;
nod* right;
nod(int key):data(key),left(NULL),right(NULL){}
}node;
node* root;
public:
void create();
void add(int key,node*curr=root);
void c2ll();
void print(){}
該代碼不編譯... 我得到下面的錯誤。C++默認參數類成員
ain.cpp: In function ‘int main()’:
main.cpp:7:12: error: call to ‘void bst::add(int, bst::node*)’ uses the default argument for parameter 2, which is not yet defined
bt.add(50);
^
In file included from bst.cpp:1:0:
bst.h:14:8: error: invalid use of non-static data member ‘bst::root’
node* root;
^
bst.h:19:28: error: from this location
void add(int key,node*curr=root);
^
bst.h:14:8: error: invalid use of non-static data member ‘bst::root’
node* root;
^
bst.cpp:10:34: error: from this location
void bst::add(int key,node* curr=root)
任何建議將受到歡迎...我試圖避免編寫的包裝方法,而是使用由C++
由於錯誤說你不能將默認參數設置爲非靜態成員變量。您應該重載添加以取得唯一的密鑰,並調用以root作爲第二個參數的兩個參數。 – Borgleader 2015-01-09 18:27:15
@Borgleader:你應該做出答案。 – jxh 2015-01-09 18:28:55
所以,這將相當於編寫一個包裝函數。無論如何,我可以逃脫,而無需編寫包裝函數? – basav 2015-01-09 18:32:29