C++ 构造函数中定义的类函数的默认参数

C++ 构造函数中定义的类函数的默认参数,c++,oop,static-variables,static-initialization,default-arguments,C++,Oop,Static Variables,Static Initialization,Default Arguments,是否有可能定义一个变量作为构造函数中的默认参数 #include <iostream> class Foo { public: Foo(int x) { num = x;} void print(int y = num) { std::cout << y << std::endl; } private: static int num; }; int main() { Foo f(5); f

是否有可能定义一个变量作为构造函数中的默认参数

#include <iostream>
class Foo
{
public:
    Foo(int x) { num = x;}
    void print(int y = num)
    {
        std::cout << y << std::endl;
    }
private:
    static int num;
};
int main()
{
    Foo f(5);
    f.print();
}
#包括
福班
{
公众:
Foo(intx){num=x;}
无效打印(整数y=num)
{

std::cout有可能,您只需在类外声明/初始化静态变量:

#包括
福班
{ 
//..
};

int Foo::num;//也相关:所以,如果我理解正确,这是不可能的?如果num不是静态的,你可以这样做。@IlyaS当num不是静态的时候,我得到
一个非静态成员引用必须是相对于一个特定的对象的
是的,但这仍然是硬编码的,我希望num是用户defined@SzymonO,您只需声明/初始化它在类之外,不必使用该值,然后用户可以定义它,请参阅演示代码。哦,好的,我现在就知道了。非常感谢:)
#include <iostream>

class Foo
{ 
    //..
};

int Foo::num; //<-- or 'int Foo::num = 0;'

int main()
{
    //...
}