Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关联方法是否应该调用对应的';联想法?_C++ - Fatal编程技术网

C++ 关联方法是否应该调用对应的';联想法?

C++ 关联方法是否应该调用对应的';联想法?,c++,C++,调用关联方法关联另一个对象的方法是正确的,还是应该调用这两个方法从这些函数外部关联它们?多谢各位 #include <set> class B; class A { public: void associate(B &b) { b_.insert(&b); b.associate(*this); } private: std::set<B*> b_; }; class A { public

调用关联方法关联另一个对象的方法是正确的,还是应该调用这两个方法从这些函数外部关联它们?多谢各位

#include <set>

class B;

class A {
public:
    void associate(B &b) {
         b_.insert(&b);
         b.associate(*this);
    }

private:
    std::set<B*> b_;
};

class A {
public:
    void associate(A &a) {
         a_.insert(&a);
         a.associate(*this);
    }

private:
    std::set<A*> a_;
};
#包括
乙级;;
甲级{
公众:
空联酒店(B&B){
b.插入(&b);
b、 合伙人(*本);
}
私人:
std::集b_2;;
};
甲级{
公众:
无效合伙人(A&A){
a.插入(&a);
a、 合伙人(*本);
}
私人:
std::设置一个;
};

为什么不简单地检查它是否已经关联,如果没有关联,就去做

void A::associate(B &b) {
     if(not b_.contains(&b)) {
          b_.insert(&b);
          b.associate(*this);
     }
}

目标应该是设计健壮的代码。这样,您可以根据需要随时调用
associate
,它将正常工作。

无条件调用该方法将导致无限递归。不调用它会使类容易被误用。我建议想出其他的解决办法。