Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.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++,下面是一段代码片段,它本身就说明了这一点。谢谢大家! class Foo : private std::vector<int> { public: void swap(Foo& x) { std::swap(bar, x.bar); // what goes here? } private: int bar; }; 类Foo:private std::vector { 公众: 无效掉期(Foo&x) { 标准:

下面是一段代码片段,它本身就说明了这一点。谢谢大家!

class Foo : private std::vector<int>
{
public:
    void swap(Foo& x)
    {
        std::swap(bar, x.bar);
        // what goes here?
    }
private:
    int bar;
};
类Foo:private std::vector { 公众: 无效掉期(Foo&x) { 标准::交换(bar,x.bar); //这里有什么? } 私人: int-bar; };
私下从
向量
继承没有问题。我的错误是,我没有看到“私有”。总之,通常有比私有继承更好的设计技术。拥有vector类型的成员变量可能是一个更好的选择。@Andrea Bergia:这完全取决于您想要提供什么。虽然我从未使用过私有继承,但当派生类提供了容器功能的子集以及一些额外的操作时,我看到了它的使用。那里的聚合要求您将每个操作实现为转发调用,而在私有继承情况下,您可以使用指令重新声明它们(
使用base\u t::push\u back;
——为了方便起见,使用typdef)
std::vector<int>::swap(x);
vector::swap(x);