代码:
static Layout::Pad& chooseFirst(Layout::Pad& A, Layout::Pad& B, bool swap) {
if(swap) { return B; } else { return A; }
}
static Layout::Pad& chooseSecond(Layout::Pad& A, Layout::Pad& B, bool swap) {
if(swap) { return A; } else { return B; }
}
void FlowchartDrawArea::addEdge(Layout::Pad& A, Layout::Pad& B) {
bool swap = false;
if(A.getPadDir() == Layout::PAD_DIRECTION::IN) {
swap = true;
}
Layout::Pad& source = chooseFirst(A,B,swap);
Layout::Pad& dest = chooseSecond(A,B,swap);
flowchart.addEdge(new Edge(source,dest));
}
我不知道还能说什么,静态函数感觉不像是解决方案,但这就是问题所在。
最佳答案
Layout::Pad& source = swap ? B : A;
Layout::Pad& dest = swap ? A : B;
flowchart.addEdge(new Edge(source,dest));
关于c++ - 这感觉有点反模式,有没有更好的方法(C++ - 分配给引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995830/