Я создал класс с именем IntSet. Моя проблема в том, что я не хочу хранить другой элемент, который представляет собой максимальное количество элементов, которые я хочу ввести в массив elem
. Итак, в методе add или любом другом методе я хочу узнать максимальный размер, который я выделил в конструкторе IntSet (int dim_max)
, используя эту операцию:
int n = sizeof(elem) / sizeof(*elem); //or sizeof(elem) / sizeof(int);
cout << "N is = " << n;
Однако это не работает, каждый раз n1, даже если я выделю elem = new int[dim_max];
, где dim_max - это переменная, которую я читаю с клавиатуры, и она намного больше 1. Вот код:
#include <iostream>
using namespace std;
class IntSet{
int *elem;
int dim;
public:
IntSet (int dim_max) {
dim = -1;
elem = new int[dim_max];
}
void add(int new_el) {
int n = sizeof(elem) / sizeof(int);
cout << "N is =" << n;
for(int i = 0; i < n; i++) {
if(elem[i] == new_el) {
cout << "It's already there !";
return;
}
}
dim++;
if(dim == n) {
elem = (int*)realloc(elem, sizeof(int) * (n + 1));
global_var++;
}
elem[dim] = new_el;
}
};