传智教育旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

jiang123456

初级黑马

  • 4

    黑马币

  • 1

    帖子

  • 0

    精华

© jiang123456 初级黑马   /  2021-9-12 10:29  /  54 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <iostream>
#include <vector>

class C {
public:
  C() = default;
  ~C() = default;

  double x() { return x_; }

  void set_x(double x) { x_ = x; }

  double y() { return y_; }

  void set_y(double y) { y_ = y; }

protected:
  double x_;
  double y_;
};

class B {
public:
  B() = default;
  ~B() = default;

  void set_c(std::vector<C> c) { c_ = c; }

  std::vector<C> c() { return c_; }

  std::vector<C> *mutable_c() { return &c_; }

protected:
  std::vector<C> c_;
};

class A {
public:
  A() = default;
  ~A() = default;

  B b() { return b_; }

  void set_b(B b) { b_ = b; }

protected:
  B b_;
};

int main() {
  A a;
  B b;
  C c1, c2;
  std::vector<C> c;
  c1.set_x(11.11);
  c1.set_y(22.22);
  c.push_back(c1);
  c2.set_x(33.33);
  c2.set_y(44.44);
  c.push_back(c2);
  b.set_c(c);
  a.set_b(b);

  for (auto it : *(a.b().mutable_c())) {
    std::cout << "111:" << it.x() << std::endl;
    std::cout << "222:" << it.y() << std::endl;
  }

  std::cout<<std::endl;

    for (auto it : a.b().c()) {
    std::cout << "333:" << it.x() << std::endl;
    std::cout << "444:" << it.y() << std::endl;
  }
  return 1;
}


执行结果:
111:0
222:4.64953e-310
111:33.33
222:44.44

333:11.11
444:22.22
333:33.33
444:44.44

为什么???
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马