私はこの部分をJAVAに変換するC++コードを理解しようとしています。メソッド呼び出しPrintItem()
は、DWORD
を2番目のパラメータとして取り込みますが、この特定の例では、enum
の2つの要素を同時に使用できますか?C++複数のenum要素がパラメータとして渡されていますか?
私はfollowing answerをAshishで紹介していましたが、何か説明がありましたが、あまり役に立ちませんでした。
enum
{
PRINT_ENTRY = 0x0001,
PRINT_PREPEND = 0x0002,
PRINT_APPEND = 0x0004,
PRINT_PRECOMMENTS = 0x0008,
PRINT_POSTCOMMENTS = 0x0010,
PRINT_SPECIAL = 0x0010,
PRINT_DEFAULT = PRINT_ENTRY | PRINT_PREPEND | PRINT_APPEND | PRINT_PRECOMMENTS | PRINT_POSTCOMMENTS | PRINT_SPECIAL
};
2つの列挙型要素が渡されているメソッド呼び出しはありますか?これは私が理解していないものです。
bResult = PrintItem(pMergeItem, PRINT_PREPEND | PRINT_ENTRY);
メソッドの宣言
bool PrintItem(CItem* pItem, DWORD options = PRINT_DEFAULT);
と定義は、少しダウントリミング:
// Prints an individual item to the invoice (based on appropriate template settings)
bool CPrintRptInvoice::PrintItem(CItem* pItem, DWORD options)
{
bool bResult = true;
CString strKey = GetItemKey(pItem);
DWORD getOpts = CPrintTemplate::GE_NONE;
if (options & PRINT_ENTRY)
getOpts |= CPrintTemplate::GE_ENTRY;
if (options & PRINT_PREPEND)
getOpts |= CPrintTemplate::GE_PREPEND;
if (options & PRINT_APPEND)
getOpts |= CPrintTemplate::GE_APPEND;
CString strEntry = m_pTemplate->GetEntry(strKey, getOpts);
// print any prefix first
if (options & PRINT_PRECOMMENTS)
PrintComment(pItem->GetInvoicePrefix());
// print main entry
if (strEntry.IsEmpty())
{
if ((options & PRINT_ENTRY) && !m_pTemplate->EntryExists(strKey))
{
//Code to print Entries, not touching options anymore.
}
}
// print any special cases
if (bResult && (options & PRINT_SPECIAL))
{
//Code to print special cases, not touching options anymore...
}
// print any suffix last
if (options & PRINT_POSTCOMMENTS)
PrintComment(pItem->GetInvoiceSuffix());
return bResult;
}
私の質問をされる - それはどのように列挙型の複数のパラメータを扱っていますか?私はそれがそのメソッド定義のそれを処理するのを見ません!私が整えたものは、options
に全く触れていません。
私はoptions
を何らかのコレクションとして参照しているので、私は混乱していると思いますか?だから、これを行うことができ、正しい要素を得るにはどうすればいいですか:
ありがとう、あなたはそれをうまく壊しました。私はそれが何であったかわからなかったので、これについての情報を見つけるのは苦労したと思います。Javaでうまく動作します! – Dayan