0

hi i was given an assignment to do
i did it but i'm always getting a segmentation fault
i found out where i'm getting the problem but i dont understand why i'm getting the problem

heres the code:
the extra cout's that dont make sense are just to tests to see where the problem is

#include <iostream>
#include <stdlib.h>
using namespace std;

#include "point.h"
                                         
class polygon{
  int n;
  point *points;
public:
  polygon(int n){
    point *points=new point[n];
    this->n=n;
  };
  void init();
  void pprint();
};

void polygon::init(){
  cout<<"n"<<n<<endl;   //
  for(int i=0;i<n;i++){
    cout<<"hehe"<<endl;  //
    points[i].set(rand()%101,rand()%101);   ////this is the place with the segmentation fault
    cout<<"blah"<<endl;  //
  }
};

void polygon::pprint(){
  cout<<"n"<<n<<endl;  //
  for(int i=0;i<n;i++){
    cout<<"bsde"<<endl;  //
    points[i].print();     /////since there is a problem above then this part is likely to have a segmentation fault as well
    cout<<"aeetr"<<endl;  //
  }
};

int main(int argc,char* argv[]){

  if(argc!=2){
    cout<<"wrong number of arguments"<<endl;
    return 1;
  }

  int a=atoi(argv[1]);

  polygon p(a);

  p.init();
  cout<<"pinit done"<<endl;  //

  p.pprint();
  cout<<"pprint done"<<endl;  //

  cout<<"end bye bye"<<endl;  //

  return 0;
};

there are no problems with the point.h point.cpp part but if you need it say so and i'll post that up later

thank you for your help in advance

3
Contributors
4
Replies
5
Views
6 Years
Discussion Span
Last Post by blahbla
0

this is point.h code

#ifndef POINT_H
#define POINT_H

class point{
  int x,y;
 public:
  int getX() const;
  int getY() const;
  void set(int x,int y);
  void print() const;
};

#endif

the code for point.cpp

#include <iostream>
using namespace std;

#include "point.h"

int point::getX() const{return x;}
int point::getY() const{return y;}
void point::set(int x,int y){
  this->x=x;
  this->y=y;
}
void point::print() const{
  cout<<"("<<x<<", "<<y<<")\n";
}
1
class polygon{
  int n;
  point *points;
public:
  polygon(int n){
    point *points=new point[n];
    this->n=n;
  };

At the line 6 you initialize a local variable points . The member points remains uninitialized.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.