Ошибка: "выражение должно иметь тип класса, но имеет тип \"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 шт):

Автор решения: Harry

Вы думаете,

myArray class_checking_manually();

это определение экземпляра class_checking_manually класса myArray?

А что тогда такое, по-вашему, int f();? Переменная f типа int?

А если подумать — не объявление ли это функции f, не принимающей аргументов и возвращающей значение int?

Ну а теперь вернитесь еще раз к упомянутой строке кода... Что вы в ней объявили на самом деле?

→ Ссылка