HaniAgel Ответов: 1

Проблема объекта C++ при печати переменных


Я получаю эту ошибку при попытке использовать объект этого класса
[Error] no match for call to '(Camel) (char, int, int, const char [5], bool)'

Я не понимаю, что именно вызывает эту проблему ??

Что я уже пробовал:

#include <iostream>
#include <string>
using namespace std;
class Camel 
{
public:
    float weight;    short age;    string name;    char gender;    bool alive;
    
	


Camel(){ 

	alive = false;} 

Camel(float weight,short age,string name,char gender,bool alive=true){
gender = gender;
weight = weight; 
age = age;
name = name;
alive = alive;

}

// a simple print function
void print(){
	cout << "Name:" << name << endl;
	cout << "Age:" << age << endl;
	cout << "Gender:" << gender << endl;
	cout << "weight:" << weight << endl;
	
	if (alive){
		cout << "Camel is Alive :) " << endl;
	}
	else{
		cout << "Camel is Dead :( " << endl;
	}
	
	
}
};


int main(){

	Camel a;
	a('M' , 5 , 20 , "test" , true);
	a.print();
}

1 Ответов

Рейтинг:
6

OriginalGriff

Ваша функция Camel-это конструктор, а не стандартная функция, поэтому вы не вызываете ее, пытаясь получить доступ к ней через экземпляр (что имеет смысл, если вы думаете об этом - если вы создаете объект, то почему у вас есть он для вызова конструктора?)
Вместо этого попробуйте это:

int main(){

	Camel a('M' , 5 , 20 , "test" , true);
	a.print();
}


HaniAgel

спасибо, это сработало отлично, это абсолютно не имеет никакого смысла после того, как думать об этом было глупой ошибкой

OriginalGriff

:смех: мы все их делаем!