none
创建动态数组类——这个程序有错,费解,错在哪,有请高手啊!!!11 RRS feed

  • 问题

  • #include<iostream>
    #include<cassert>
    using namespace std;
    class Point{
    public:
     Point():x(0),y(0){
     cout<<"默认构造函数"<<endl;
     }
     Point (int x,int y):x(x),y(y){
     cout<<"构造函数"<<endl;
     }
     ~Point(){ cout<<" 析构函数"<<endl;}
     int getx() const {return x;}
     int gety() const {return y;}
     void move(int newx,int newy){
     x=newx;
     y=newy;
     }
    private:
     int x,y;

    };
    //创建动态数组类
    class Arrayofpoints{
    public:
     Arrayofpoints(int size):size(size){
     points=new Point[size];
     }
     ~Arrayofpoints(){
     cout<<"Deleting...."<<endl;
     delete[] points;

     }
     //获得下标为index的数组元素
     Point &element(int index){
     assert (index>=0&&index<size);
     return points[index];
     }
    private:
     Point *points;
     int size;
    };
    int main(){
     int count;
     cout<<"请输入点的个数:";
     cin>>count;
     Arrayofpoints points(count);
     points.element(0).move(5,0);
     points.element(1).move(15,20);
    return 0;
    }

    2011年6月21日 5:46

答案

  • 没错啊,我在vs2010下运行过了,因为你有这条语句

    points.element(1).move(15,20);

    所以输入的点数必须大于1,否则会越界

    2011年6月21日 6:42
  • Zrf-永不言败,

    >>我在VS2010里运行了,出现出现一个或多个重定义符号

    我在vs2008vs2010运行过,一切正常。您可以尝试以下步骤看看是否还会出现问题。

    1.       点击File –>New-> Project;

    2.       选择 Visual C++ ->Win32-> Win32 Console Project;

    3.       输入您的工程名字,点击OK.

    4.       点击Finish

    这样您就新建了一个win32的控制台程序。更详细的关于新建win32控制太程序的资料:http://msdn.microsoft.com/en-us/library/46e82t5z(v=VS.100).aspx

    然后把您的代码贴到您的.cpp文件中。运行。

    如果您的问题解决了,请把有用的回答标记为答案!

     

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月22日 6:59
    版主

全部回复

  • 没错啊,我在vs2010下运行过了,因为你有这条语句

    points.element(1).move(15,20);

    所以输入的点数必须大于1,否则会越界

    2011年6月21日 6:42
  • 我在VS2010里运行了,出现“出现一个或多个重定义符号”啊!
    曾仁福
    2011年6月21日 6:48
  • 能否把错误的输出提供一下


    麻烦把正确答案设为解答。
    2011年6月21日 6:52
    版主
  • Zrf-永不言败,

    >>我在VS2010里运行了,出现出现一个或多个重定义符号

    我在vs2008vs2010运行过,一切正常。您可以尝试以下步骤看看是否还会出现问题。

    1.       点击File –>New-> Project;

    2.       选择 Visual C++ ->Win32-> Win32 Console Project;

    3.       输入您的工程名字,点击OK.

    4.       点击Finish

    这样您就新建了一个win32的控制台程序。更详细的关于新建win32控制太程序的资料:http://msdn.microsoft.com/en-us/library/46e82t5z(v=VS.100).aspx

    然后把您的代码贴到您的.cpp文件中。运行。

    如果您的问题解决了,请把有用的回答标记为答案!

     

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月22日 6:59
    版主