短いバージョン:...
最初に解析せずに、可変引数関数で 表される内容を別の関数に渡すにはどうすればよいva_list
ですか?
ロングバージョン:
以下は私のクラスの2つの関数です。各関数の最初の4行が同一であることに注意してください。そして、私はこのクラスに同じ最初の4行を持つ他の6つの関数を持っています。
void cyclOps::Logger::warn(char* szFile, char* szFunction, int iLine, char* szFormat, ...) {
va_list vaArguments;
va_start(vaArguments, szFormat);
char szOutput[10000];
_vsnprintf_s(szOutput, CYCLOPSSIZEOF(szOutput), _TRUNCATE, szFormat, vaArguments);
this->log("WARNING: %s [%s - %s(%d)]", szOutput, szFile, szFunction, iLine);
}
void cyclOps::Logger::info(char* szFormat, ...) {
va_list vaArguments;
va_start(vaArguments, szFormat);
char szOutput[10000];
_vsnprintf_s(szOutput, CYCLOPSSIZEOF(szOutput), _TRUNCATE, szFormat, vaArguments);
this->log("INFO: %s", szOutput);
}
これらの4つの同一の行を、と呼ばれる1つの関数に入れて、次のようにsummarizeVariableArguments()
呼び出します...
void cyclOps::Logger::info(char* szFormat, ...) {
std::string strOutput = this->summarizeVariableArguments(/* TBD */);
this->log("INFO: %s", strOutput.c_str());
}
...ここで、の内容は前の2つの関数strOutput
の内容と同じになりszOutput
ます。...
しかし、パラメータを別の関数に渡すにはどうすればよいですか?