相关疑难解决方法(0)

45
推荐指数
2
解决办法
9827
查看次数

非静态成员作为非静态成员函数的默认参数

struct X
{
   X():mem(42){}
   void f(int param = mem) //ERROR
   {
      //do something
   }
private: 
   int mem;
};
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一个原因,为什么这在C++中是非法的?!也就是说,我知道这是一个错误,我知道错误意味着什么,我只是无法理解为什么这是非法的!

c++ member-functions default-value

28
推荐指数
3
解决办法
4948
查看次数

默认参数问题(c ++)

可能重复:
非静态成员作为非静态成员函数的默认参数
为什么成员变量不能用作参数的默认值?

好的,如果我没有在这里看到一些非常简单的东西或忘记C++的一些基本规则,我提前道歉但我不确定为什么这不能按预期工作.

这是一个我无法工作的代码示例

class Foo
{
private:
    Bar *ptrBar;
public:
    void doSomething(int x, Bar *p = ptrBar);
}
Run Code Online (Sandbox Code Playgroud)

编译器遇到此函数的默认参数问题.有什么理由说这不起作用.

基本上doSomething会对Bar对象进行一些操作,我希望它是ptrBar默认指向的那个.除非忘记什么,否则一切似乎都是合理的?

c++ pointers class

1
推荐指数
1
解决办法
87
查看次数

标签 统计

c++ ×3

class ×1

default-value ×1

member-functions ×1

pointers ×1