Счетчик объектов класса C ++ как случайный со статическим членом - PullRequest
0 голосов
/ 08 ноября 2018

Прежде всего, я занимаюсь исследованиями, но из-за того, что я не мог усвоить это на уроке, другие ответы мне не пригодились. Теперь мой учитель просит из этого кода, что мой счетчик должен быть инициализирован статическим членом. И когда я создаю другой объект в классе, он должен быть посчитан на 1000, 1001, 1002. Кроме того, первый созданный мной объект должен иметь случайное число, которое не должно быть глобальным, после того, как это случайное число будет считаться 1 на 1. И я должен использовать указатель для всего этого. Вы знаете, это действительно сложно для меня, но это то, что он хочет, как он сказал. Вот мой код, который не работает.

#ifndef POINT_H
#define POINT_H
#include <cstdlib> 
#include <ctime> 

class Point
{
private:
int x;
int y;
static int count;

public:
Point(int, int);
void objectCount()
{
    srand((unsigned)time(0));
    Point::count = rand();
    Point::
    count++;
}

 void print();

};
#endif 

и мой .cpp

#include "Point.h"
#include <iostream>
using namespace std;

Point::Point(int x, int y):x(x), y(y){}


void Point::print()
{
 cout << "(" << x << "," << y << ")" << " " << count << endl;
}

1 Ответ

0 голосов
/ 08 ноября 2018

Непонятно, что вы спрашиваете, но вы, вероятно, хотите что-то вроде этого:

#ifndef POINT_H
#define POINT_H
#include <cstdlib> 
#include <ctime> 

class Point
{
private:
  int x;
  int y;
  static int count;

public:
  Point(int, int);
  int objectCount()
  {
    return count++;
  }

  void print();
  static int initializeCount();    
};
#endif 

#include <iostream>
#include "Point.h"
using namespace std;

int Point::count = Point::initializeCount();

int Point::initializeCount()
{
  srand((unsigned)time(0));
  return rand();
}

Point::Point(int x, int y) :x(x), y(y)
{
  objectCount();
}    

void Point::print()
{
  cout << "(" << x << "," << y << ")" << " " << count << endl;
}

int main()
{
  Point p1(1,2);
  p1.print();

  Point p2(2,2);
  p2.print();
}
...