none
成员运算符这样用是什么意思? RRS feed

  • 问题

  • void DeleteSurfaceElement (int eli)
      { 
        surfelements.Elem(eli).Delete();
        surfelements.Elem(eli).PNum(1) = -1; 
        surfelements.Elem(eli).PNum(2) = -1; 
        surfelements.Elem(eli).PNum(3) = -1; 
        timestamp = NextTimeStamp();
      }

    有如上所示的一个函数,函数体中每个句子都连续使用了成员运算符,比如第一句,Elem(eli)已经是一个函数,Delete怎么会被包含在里面呢?实在是不明白。请大家帮忙给解答一下。
    2012年8月16日 12:47

答案

  • 那要看看surfelements.Elem(eli)函数调用返回的应该是某一个类型的对象。

    拿CString类来说,比如您可以这样使用CString str = _T("ABCD#1234");

    if(0 == str.Left(4).CompareNoCase(_T("ABCD"))) // 判断CString类对象的最左边的4个字符是否是"ABCD"

    {

    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2012年8月16日 14:30
    版主

全部回复

  • 那要看看surfelements.Elem(eli)函数调用返回的应该是某一个类型的对象。

    拿CString类来说,比如您可以这样使用CString str = _T("ABCD#1234");

    if(0 == str.Left(4).CompareNoCase(_T("ABCD"))) // 判断CString类对象的最左边的4个字符是否是"ABCD"

    {

    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2012年8月16日 14:30
    版主
  • 这里Elem(eli)的返回值是不是对象我拿不准,请您帮忙看一下:

    template <class T, int BASE = 0>
      class FlatArray
      {
      protected:
            /// the data
        T * data;
      }

    上面是关于T和data的定义,函数的定义如下:

    T & Elem (int i)
        {
    #ifdef DEBUG
          if (i < 1 || i > size)
    	cout << "Array<" << typeid(T).name() 
    	     << ">::Elem out of range, i = " << i
    	     << ", s = " << size << endl;
    #endif
          return ((T*)data)[i-1]; 
        }

    就形式上来看,返回的好像是一个和数组,而不是对象。您看呢?
    2012年8月17日 13:41