私はこのような何かを達成したい:クラスの属性値をメソッドの既定のパラメーターとして使用する代わりに、
に使用してはならない:C++標準が言うように、これは不可能です非静的メンバは、デフォルト引数
class C
{
int m_nVal;
public:
C(int nVal) : m_nVal(nVal){}
void foo(int nVal = m_nVal)
{
// use nVal, if provided; otherwise use m_nVal
}
};
C c(1);
c.foo(); // use 1
c.foo(2); // use 2
を
私が持っているオプション:
(1)オーバーロードfoo()
:
class C
{
int m_nVal;
public:
C(int nVal) : m_nVal(nVal){}
void foo()
{
// use m_nVal
}
void foo(int nVal)
{
// use nVal
}
};
(2)静的メンバを使用します
class C
{
static int m_nVal;
public:
void foo(int nVal = m_nVal)
{
// use nVal, if provided; otherwise use m_nVal
}
};
を私はm_nVal
静的メンバをしたくないので、オプション1は、一つだけのようです。
これを達成する他の方法はありますか?
これは過負荷が*のために作られたものといえます。 – Jon
foo(int nval)に関してfoo()を呼び出すだけです。 – Jagannath
私はポインタと 'nullptr'をデフォルト値として使うのはオプションではないと思いますか? –