【发布时间】:2015-11-03 17:37:55
【问题描述】:
我有一个类包含一个私有属性和一个虚拟方法。
class A
{
private:
int var1;
virtual int foo()
{ return var1;}
public:
A(){ var1 = 2; }
};
在我的“主要”功能中,我有:
A a;
cout<<func1(&a);
我想在不改变类的情况下在“func1”中获取 var1 的值和“foo”函数的返回值。 如果我想解决它,我可以为 var1 添加 set 和 get 方法,但我不打算更改类。 这怎么可能?从类外部访问私有方法和属性的任何参考?
【问题讨论】:
-
不破坏 C++ 语言规则是不可能的。这正是
private的用途:您不能从外部访问成员。见gotw.ca/gotw/076.htm -
@AnonMail:我希望没有“教授”参与这个毫无意义的练习。
-
@EdHeal 它可以很好地与 NVI 成语 gotw.ca/publications/mill18.htm 一起使用。
-
@EdHeal:那是错误的。私有虚成员函数是 C++ 中的最佳实践!
-
这里有一个非常相似的问题:Accessing private members
标签: c++ object private-members