Boost logo

Boost Users :

Subject: Re: [Boost-users] shared_array const member function
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-08-26 12:46:07


AMDG

Daya S. Prasad wrote:
> Can any body please tell me why operator[] is defined in case of
> shared_array<T> like this way:
>
> Type & operator[](std::ptrdiff_t) const;
>
> It reports compile time error. Consider the code:
>
> class Widget {
> std::string classId;
> public:
> std::string getClassId() const {
> return classId;
> }
> };
>
> int main()
> {
> boost::shared_array<Widget> obj(new Widget[10]);
> std::string id = obj[7].getClassId
> (); // Error
> }
>

?
It compiles fine for me.

> In my opinion operator function should be defined as follows:
>
> const Type & operator[](std::ptrdiff_t) const;
> Type & operator[](std::ptrdiff_t) ;
>

shared_array is defined like a pointer.
  int* const array = new int[5];
  int& i = array[2];
similarly
  const boost::shared_array<int> array(new int[5]);
  int& i = array[2];

In Christ,
Steven Watanabe


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net