首页
社区
课程
招聘
c++primer第三版第二章程序vs2005編譯錯誤
发表于: 2011-6-17 13:03 3012

c++primer第三版第二章程序vs2005編譯錯誤

2011-6-17 13:03
3012
TheExp1.h

template < class elemType >
class Array
{
        public:
                explicit Array( int size = DefaultArraySize );
                Array( elemType *array, int Array_size );
                Array( const Array &rhs );
                virtual ~Array(){ delete [] ia; }
                bool operator==( const Array& )const;
                bool operator!=( const Array& )const;
                Array& operator=( const Array& );
                int size() const { return _size; }
                virtual elemType operator[]( int index ){ return ia[index]; }
                virtual void sort();
                virtual elemType min() const;
                virtual elemType max() const;
                virtual int find( const elemType &value ) const;
        protected:
                int _size;
                elemType *ia;
                static const int DefaultArraySize = 12;
};

TheExp1.cpp

#include "iostream"
#include "TheExp1.h"
using namespace std;

int main()
{
        const int array_size = 4;

        Array<int> ia(array_size);
        Array<char> ca(array_size);
        Array<double> da(array_size);

        int ix;

        for ( ix = 0; ix < array_size; ++ix)
        {
                ia[ ix ] = ix;
                da[ ix ] = ix * 1.75;
                ca[ ix ] = ix + 'a';
        }

        for ( ix = 0; ix < array_size; ++ix)
                cout << "[" << ix << "] ia:" << ia[ ix ]
                << "\tca:" << ca[ ix ]
                << "\tda:" << da[ ix ] << endl;
        return 0;       
}

錯誤為

                ia[ ix ] = ix;
                da[ ix ] = ix * 1.75;
                ca[ ix ] = ix + 'a';

編譯器提示錯誤原因:

error C2106: “=”: 左操作数必须为左值               

請高手幫忙作答

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
修改成这样就行了。
int main()
{
  const int array_size = 4;

  int ia[array_size];
  char ca[array_size];
  double da[array_size];

  int ix;

  for ( ix = 0; ix < array_size; ++ix)
  {
    ia[ ix ] = ix;
    da[ ix ] = ix * 1.75;
    ca[ ix ] = ix + 'a';
  }

  for ( ix = 0; ix < array_size; ++ix)
    cout << "[" << ix << "] ia:" << ia[ ix ]
    << "\tca:" << ca[ ix ]
    << "\tda:" << da[ ix ] << endl;
  return 0;  
}

可以确定,问题出在了
  Array<int> ia(array_size);
  Array<char> ca(array_size);
  Array<double> da(array_size);
上,不过我编程没有接触过上面这样的定义。我写程序总是越简单越好!
2011-6-17 13:23
0
雪    币: 446
活跃值: (758)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
virtual elemType& operator[]( int index ){ return ia[index]; }

引用&
2011-6-17 13:30
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我粗心了  謝謝3樓的朋友!
2011-6-17 13:32
0
游客
登录 | 注册 方可回帖
返回
//