Решение 1: Используйте массив целых чисел в качестве инициализатора, конструктор используется для преобразования целого числа в MyCLASS.
class myClass
{
public:
//constructor
myClass(int num) {m_number = num;};
void myClassFunction(){cout<< "I am " << m_number << endl;}
private:
int m_number;
};
int main(){
myClass myInstance[10] = {0,1,2,3,4,5,6,7,8,9};
for (int i=0; i< 10; i++) myInstance[i].myClassFunction();
}
Решение 2: Используйте статический счетчик для установки m_number, поэтому нет необходимости использовать конструктор не по умолчанию.
class myClass
{
public:
//constructor
myClass(){m_number=counter++;};
void myClassFunction(){cout<< "I am " << m_number << endl;}
private:
int m_number;
static int counter;
};
int myClass::counter = 0;
int main(){
myClass myInstance[10];
for (int i=0; i< 10; i++) myInstance[i].myClassFunction();
}
Решение 3. Установите m_number после вызова конструктора, поэтому конструктора по умолчанию достаточно.
class myClass
{
public:
//constructor
void setNum(int num){m_number=num;};
void myClassFunction(){cout<< "I am " << m_number << endl;}
private:
int m_number;
};
int main(){
myClass myInstance[10];
for (int i=0; i< 10; i++) myInstance[i].setNum(i);
for (int i=0; i< 10; i++) myInstance[i].myClassFunction();
}
Take 'MyCLASS MyInstance [я];' ** из ** тела цикла, объявляющего его выше для петли, как 'MyCLASS MyInstance [10];' If вы ищете способ передать различные значения для построения массива для каждого члена, вы не будете легко делать это так (и на самом деле может быть проблемой * реального *, которую вы пытаетесь решить) , – WhozCraig
Вы компилируете с полными предупреждениями?Использовать '-Wall -Wextra -pedantic' и возможность выбора новейшего стандарта C++ тоже не будет ошибкой. Затем компилятор должен громко жаловаться на ваш код. – Deduplicator
IMO и со всем уважением: вам действительно нужно прочитать хорошую книгу на C++. –