[問題] 關於_one與_zero
抱歉打擾了
我有的問題是
在BddManager的constructor中
會call到init()然後會跑過這兩行
BddNode::_one = BddNode(BddNodeInt::_terminal, BDD_POS_EDGE);
BddNode::_zero = BddNode(BddNodeInt::_terminal, BDD_NEG_EDGE);
但_one一開始_nodeV是空的
所以=的overload中相對應的BddNodeInt的_refcount是不是就不用--了呢?
此外在test.cpp中
我想辦法cout了_one與_zero這兩個static的data member
結果為
zero:
[0](+) 0x9d13cc0
==> Total #BddNodes : 1
one:
[0](+) 0x9d13cc0
==> Total #BddNodes : 1
可是
BddNode的constructor不是
BddNode::BddNode(BddNodeInt* n, BDD_EDGE_FLAG f)
{
assert(n != 0);
_nodeV = size_t(n) + f;
n->incRefCount();
}
且BddNode::print是
BddNode::print(ostream& os, size_t indent, size_t& nNodes) const
{
for (size_t i = 0; i < indent; ++i)
os << ' ';
BddNodeInt* n = getBddNodeInt();
os << '[' << getLevel() << "](" << (isNegEdge()? '-' : '+') << ") ";
...
可是cout的結果_zero與_one的Edge都是(+)
不是應該是一個(+)一個(-)才對嗎
觀念不知道沒有想錯otz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.241.149
※ 編輯: scxz 來自: 140.112.241.149 (01/04 23:57)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):