Слишком много аргументов в ошибке вызова функции - PullRequest
0 голосов
/ 22 апреля 2019

Я работаю над созданием объекта класса, написал конструктор и работаю над добавлением объекта.Я считаю, что у меня достаточно переменных для функции, но это говорит о том, что у меня слишком много аргументов.Я не понимаю, почему это говорит.

Я попытался переделать свой конструктор и код, но продолжаю сталкиваться с той же ошибкой.В конце концов я хочу иметь возможность клонировать объект, но я также не уверен, как это сделать.

#include "pch.h"
#include <iostream>
#include <string>

using namespace std;


class Animal {
public:
    Animal() {};

    Animal(string uAName, string uASize, string uAColor, int uANumLegs)
        : aName(uAName), aSize(uASize), aColor(uAColor), numLegs(uANumLegs) {};

    void printAnimal(Animal) {
        cout << "Your animal is: " << aName << endl;
        cout << "The animal size is: " << aSize << endl;
        cout << "The animal Color is: " << aColor << endl;
        cout << "The animal has " << numLegs << " legs" << endl;
    }

    virtual Animal* clone() { return (new Animal(*this)); }

    void aClone(Animal* nAnimal) {
        Animal* cal = nAnimal->clone();

    }

private:
    string aName = "";
    string aSize= "";
    string aColor = "";
    int numLegs = 0;


    };



int main()
{
    Animal newAnimal();

    string uName = "Bear";
    string uSize = "Large";
    string uColor = "Black";
    int uLegs = 4;

    newAnimal(uName, uSize, uColor, uLegs);

}

1 Ответ

3 голосов
/ 22 апреля 2019

Animal newAnimal(); - это объявление функции , а не объявление переменной (из-за "самого неприятного анализа" ). Таким образом, вызов newAnimal(uName, uSize, uColor, uLegs); пытается вызвать функцию с 0 параметрами с 4 значениями, отсюда и ошибка.

Даже если вы исправите это объявление (удалив скобки), ваш код все равно не сможет скомпилироваться, поскольку newAnimal(uName, uSize, uColor, uLegs); будет пытаться вызвать operator() для объекта newAnimal, но ваш класс не реализует operator().

Чтобы вызвать конструктор вашего класса, вам нужно вместо него main() изменить на это:

int main() {
    string uName = "Bear";
    string uSize = "Large";
    string uColor = "Black";
    int uLegs = 4;
    Animal newAnimal(uName, uSize, uColor, uLegs);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...