C++ 使用不同类的指针访问类的私有成员

C++ 使用不同类的指针访问类的私有成员,c++,class,pointers,containers,C++,Class,Pointers,Containers,C++让我头痛不已。如何访问其他类中另一个类的私有成员?下面是我的示例代码,我试图访问它的成员,但我不断收到关于它是另一个类的私有成员的各种错误 class Ex1 { private: int test1; }; class Ex2 { public: Ex2(); void access2Ex(); private: Ex1 *pointer_to_Ex1; }; 我想从Ex2访问Ex1,并在Ex2中对其进行讨厌的操作,通过讨厌,我只想能

C++让我头痛不已。如何访问其他类中另一个类的私有成员?下面是我的示例代码,我试图访问它的成员,但我不断收到关于它是另一个类的私有成员的各种错误

class Ex1 {
private: 
      int test1;
};

class Ex2 {
public:
      Ex2();
      void access2Ex();
private:
      Ex1 *pointer_to_Ex1;
};
我想从Ex2访问Ex1,并在Ex2中对其进行讨厌的操作,通过讨厌,我只想能够触摸它,抚摸它,或者让它至少承认Ex2的存在。任何人都可以帮助我,我很感激。

< P>一个类的“私有”成员的全部目的(如java、C++或任何其他面向对象的语言,具有“公共”和“私有”的概念”是其他类无法访问的。如果您确实希望另一个类具有访问权限,请在该类上创建访问器函数/属性:

 class Ex1{
   public:
     int getTest(){ return test1; }
     void setTest(int value){ test1 = value; }
   private:
     int test1;
 }
现在,您有了一个很好的接口,可以对其进行编程并利用面向对象的原则

编辑:回答下面的评论

 class Ex2{
   public:
     Ex2();
     void printIt(){
       cout << pointer_to_Ex1->getTest() << endl;
     }
 }
类Ex2{
公众:
Ex2();
void printIt(){

CUT GETTEST()

@惠特斯回答是一个很好的建议。但是我建议,不要简单地添加<代码> Geult和 SET方法,您可以考虑添加对该类有意义的方法。

例如,我曾在一个图书馆系统上工作过一次,我们没有使用
Loan::setDueDate(date)
方法,而是使用
Loan::renew(date)
Loan::recall(date)
方法。最初,它们做了同样的事情:
date\uu=date
,但随着时间的推移,它们独立发展,例如
renew(date)
方法可以增加
续订计数
成员。(这是一种比添加
setRenewCount(count)
并强制调用方记住在适当的时候调用这两种方法要好得多的方法。)


封装是面向对象的一个重要原则。注意它会使程序更可靠。禁止访问私有成员是使ncapsulation工作的工具。setter削弱了该工具(尽管它们比允许从“任何地方”直接访问成员要好得多)“如果你想触摸它,为什么要让它成为私有的……你的类Ext1完全是无用的——所有的成员都是私有的,没有朋友类/函数”,也许他把代码分解成与问题相关的东西。我刚学习C,所以C++概念很难掌握。谢谢。如果你走OO的道路,它将真正揭示OO语言中事物的奥妙。换句话说,C++除了一种严格的OO语言之外,还有更多的方法能快速地使你头脑发热。我说,如果你愿意问问题(偶尔得到一次投票)。那么你会学得很快。祝你好运!好的,现在我已经设置了访问器函数,Ex2如何获取信息?@user2816227请参阅更新。