我想使用变量作为结构中函数的默认参数

例如这样

struct A {
    int b;
    A () {
        b = 0;
    }
    int func(int t = b) {
        ...
    }
}


对不起,我的编码不好这是我第一次发布问题

但我一直收到错误,我也尝试使用static int,但出现运行时错误。

有什么方法可以将b用作默认参数吗?

当对b使用static int时,我得到:(mx是b而wavelet_tree是A)

/tmp/cc3OBfq8.o: In function `main':
a.cpp:(.text+0x2dc): undefined reference to `wavelet_tree::mx'
/tmp/cc3OBfq8.o: In function `wavelet_tree::wavelet_tree()':
a.cpp:(.text._ZN12wavelet_treeC2Ev[_ZN12wavelet_treeC5Ev]+0x42): undefined reference to `wavelet_tree::mx'
/tmp/cc3OBfq8.o: In function `wavelet_tree::build(int*, int, int)':
a.cpp:(.text._ZN12wavelet_tree5buildEPiii[_ZN12wavelet_tree5buildEPiii]+0x66): undefined reference to `wavelet_tree::mx'
a.cpp:(.text._ZN12wavelet_tree5buildEPiii[_ZN12wavelet_tree5buildEPiii]+0x73): undefined reference to `wavelet_tree::mx'
a.cpp:(.text._ZN12wavelet_tree5buildEPiii[_ZN12wavelet_tree5buildEPiii]+0x7f): undefined reference to `wavelet_tree::mx'
collect2: error: ld returned 1 exit status

最佳答案

只需重载功能

struct A
{
    int b;
    A () : b(0) {};

    int func(int t) { return whatever();};
    int func()  {return func(b);};
};


这样,b可以是A的任何成员(无论是否为static),或者可以是在定义了func()的位置可访问的任何变量,等等。

09-09 23:19