Ошибка: "выражение должно иметь тип класса, но имеет тип \"myArray (*)()\""
Компилятор выдает три ошибки:
"base of member reference is a function; perhaps you meant to call it with no arguments?"
"выражение должно иметь тип класса, но имеет тип "myArray (*)()""
"empty parentheses interpreted as a function declaration [-Wvexing-parse]"
при выполнении следующего кода:
#include <iostream>
#include <string>
using namespace std;
class myArray
{
private:
static inline const int size{5};
int massiv[size];
public:
myArray(int *massiv)
{
for(int i = 0; i < size; i++)
this->massiv[i] = massiv[i];
}
myArray()
{
for(int i = 0; i < size; i++)
{
cout << "введите " << i+1 << " число: "; cin >> this->massiv[i];
}
}
void print()
{
for(int i = 0; i < size; i++)
cout << this->massiv[i] << ' ';
cout << '\n';
}
void setFull(int *massiv)
{
for(int i = 0; i < size; i++)
this->massiv[i] = massiv[i];
}
void setOne(int number, int i)
{
this->massiv[i] = number;
}
};
int main()
{
int array_1[5] {0,1,2,3,4};
myArray class_checking (array_1);
class_checking.print();
int array_2[5] {5,6,7,8,9};
class_checking.setFull(array_2);
class_checking.print();
class_checking.setOne(23, 0);
class_checking.print();
myArray class_checking_manually();
class_checking_manually.print();
return 0;
}
Я создаю массив array_1, который вставляю в class_checking и всё работает с классом исправно, через конструктор myArray(int *massiv), далее создаю объект класса class_checking_manually и хочу его заполнить в конструкторе myArray(), где заполняю его вручную но выдаются эти ошибки.
Ответы (1 шт):
Вы думаете,
myArray class_checking_manually();
это определение экземпляра class_checking_manually класса myArray?
А что тогда такое, по-вашему, int f();? Переменная f типа int?
А если подумать — не объявление ли это функции f, не принимающей аргументов и возвращающей значение int?
Ну а теперь вернитесь еще раз к упомянутой строке кода... Что вы в ней объявили на самом деле?