C++ 如何转换一个类方法来修改另一个类的私有元素?
我有一个类B,它的指针属性是类a,它的方法将指针属性分配给另一个类a的变量。但是这个变量是私有的,分配变量会产生错误。我如何解决这个问题C++ 如何转换一个类方法来修改另一个类的私有元素?,c++,encapsulation,C++,Encapsulation,我有一个类B,它的指针属性是类a,它的方法将指针属性分配给另一个类a的变量。但是这个变量是私有的,分配变量会产生错误。我如何解决这个问题 #include<iostream> using namespace std; class A { private : int x; public: A(int); ~A(); }; class B { private : A * pA; int y; public: B(int, int);
#include<iostream>
using namespace std;
class A {
private :
int x;
public:
A(int);
~A();
};
class B {
private :
A * pA;
int y;
public:
B(int, int);
~B();
void imprimer();
};
void B::imprimer() {
cout << "B::imprimer: " << pA->x << " " << y << endl;
}
main()
{
B to(1, 2);
to.imprimer(); //instruction (1)
}
#包括
使用名称空间std;
甲级{
私人:
int x;
公众:
A(int);
~A();
};
B类{
私人:
A*pA;
int-y;
公众:
B(int,int);
~B();
无效提示();
};
void B::impimer(){
cout您缺少的是类A的类get()和set(int)方法
或
你没有宣布B班是a班的朋友
A的x是类A中的一个私有变量。只有类A可以修改它的变量,除非你做一些事情
你宣布B班是a班的朋友
class B; // you must 'declare Class B before Class A for this to work
class A {
friend class B;
private :
int x;
public:
A(int);
~A();
};
这将允许B类完全访问A类中的任何内容。但这是一个糟糕的设计
“C++ C++底漆”中有很多复杂的方法,S. Lippman允许“我怎样才能解决这个问题?”这不是一个需要解决的问题,而是应该发生的事情。一切都是按预期的进行的。你不应该去接触其他的私人成员,C++也不允许你这么做。这里没有任何问题。
class B; // you must 'declare Class B before Class A for this to work
class A {
friend class B;
private :
int x;
public:
A(int);
~A();
};
class A {
private :
int x;
public:
A(int);
~A();
int getX( void) { return( x ) };
};
void B::imprimer() {
cout << "B::imprimer: " << pA->getX() << " " << y << endl;
}