可以这样写,不过既然你把money_设定为一个私有属性,最好不要直接在构造函数中赋值(语法没错),再加个 public void SetMoneySum( int money )函数的好啦

解决方案 »

  1.   

    问题在于GetMoneySum上,因为money_是私有属性。举个例子吧,虽然你我都为人类,但是由于我的银行密码是私有的,所以你不能知道,但是象上面的代码所示的情况,我可以知道你的银行密码,你也可以知道我的银行密码,天下岂不是要大乱?
      

  2.   

    可以这样写,不过既然你把money_设定为一个私有属性,最好不要直接在构造函数中赋值(语法没错),再加个 public void SetMoneySum( int money )函数的好啦
    不对,所有的成员变量必须在构造函数中明确的赋予初值,这是一个好习惯,而在C++中,这就更为重要了。
      

  3.   

    可以这样写,不过既然你把money_设定为一个私有属性,最好不要直接在构造函数中赋值(语法没错),再加个 public void SetMoneySum( int money )函数的好啦
    不对,所有的成员变量必须在构造函数中明确的赋予初值,这是一个好习惯,而在C++中,这就更为重要了。
      

  4.   

    public int GetMoneySum( person p )
        {
            return p.money_;
        }这个方法应该是静态的,因为他没有使用任何非静态的成员。
    并且建议可以写成只读属性:    public int MoneySum
        {
            get { return money_; }
        }
    同时,正如楼上所说,这个方法是不是有安全问题?
      

  5.   

    http://community.csdn.net/Expert/TopicView.asp?id=3704470
    帮忙!!谢谢!!
      

  6.   

    可以在一个类中访问该类的一个对象的私有成员吗
    public int GetMoneySum( person p )
        {
            return p.money_;
        }
    p.money_;
    是私有的呀
      

  7.   

    To :Ivony()
        虽然这里可以是静态的,而且应该是静态的。
        但是我们讨论的主要是一个类的某个对象是否可以访问该类中另一个对象的私有属性的问题。
        如果硬要改,可以加一个方法,如下:    public person copy()
        {
            person p = new person();
            p.money_ = this.money_;        return p;
        }    难道一个人可以私自将一笔钱放到别人的账号中吗?
      

  8.   

    可以这样写,不过既然你把money_设定为一个私有属性,最好不要直接在构造函数中赋值(语法没错),再加个 public void SetMoneySum( int money )函数的好啦给私有成员附值不就是构造函数的主要功能吗?
      

  9.   

    to aspgreener(水若寒)我仅仅是从代码的角度来说,并不试图去猜测或者揣度楼主的代码到底干什么用的。实际上,如果person类没有公开的构造方法。或者,person类的对象必须在经过一系列的验证后才可以得到,也就是说其本身就是需要密码才能够得到的对象,那么,它的Money属性设为公开的又有何不可?
    如果是要实现一个银行帐户,那么类应该这样写:
    class BankAccount
    {
      static public BankAccount GetAccount ( string number ) {...}//得到银行帐户对象  public Money GetMoney ( string queryPassword ) {...}//得到帐户剩余金额  public bool Pay ( BankAccount target, Money money, string payPassword ) {...}//支付金额到其他帐户。
    }struct Money
    {
      ulong _money = 0;
      
      public override ToString() {...}//以货币形式输出
    }