0

セッターがたくさんいます。それぞれの異なるセッター引数の名前を綴らずに、各セッターの最初の引数を取得する一般的な方法はありますか?例えば:

void
Class::setSelectedEntryIndex(int newSelectedEntryIndex) {
    m_log(ExEr) << "first arg: " << newSelectedEntryIndex << std::endl;
    m_selectedEntryIndex = newSelectedEntryIndex;
    emit selectedEntryIndexChanged();
}

replaced with:

void
Class::setSelectedEntryIndex(int newSelectedEntryIndex) {
    m_log(ExEr) << "first arg: " << this->firstArg << std::endl;   // Change here
    m_selectedEntryIndex = newSelectedEntryIndex;
    emit selectedEntryIndexChanged();
}

4

1 に答える 1

1

あなたが提案する方法ではありません。パラメータリストをに変更することもできstd::tupleますが、セッターを扱っているので、パラメータリストにはそれぞれ1つのパラメータがあると思います。

自動化するための最善の方法(私がやりたいと思うこと)は、関数定義ですべてのパラメーターに同じ名前を付けることです。とにかく、C ++はそれを気にしないので、宣言でそれらに説明的な名前を付けることができます。

.h

class MyClass {
  void setTemperature(int newTemperature);
  // or
  void setTemperature(int); // <- people sometimes find this less self-documentative
};

.cpp

void MyClass::setTemperature(int param1) {
  m_log(ExEr) << "first arg: **" << param1 << std::endl;
  /* ... */
}
于 2012-08-27T19:15:55.580 に答える