Ошибки класса и объекта Microsoft Visual Studio

0

Я должен сделать проблему c++ для школы с классами и объектами.

Создайте класс "Шаорма".

-member данные: мясо, чеснок, соль, пеппер;

-member: неявные конструкторы, параметры

-constructors, функции для печати на

-screen, функции, которые изменяют тип члена "чеснок", функцию, которая

-return мясо, деструктор;

Я использую Microsoft Visual Studio 2013, и я получаю следующие ошибки:

-Error 2 ошибка LNK1120: 1 нерешенные внешние;

-Error 1 ошибка LNK2019: неразрешенный внешний символ "public: __thiscall shaorma :: shaorma (void)" (? 0shaorma @@QAE @XZ), на который ссылается функция _main;

#include<iostream>
#include<conio.h>

using namespace std;

class shaorma
{
int salt, peper;
char meat[40];
char garlic[3];

public:
shaorma();
shaorma(int, int, char*, char*);
~shaorma();
void print();
void setgarlic(char*);
char* getmeat();
};

shaorma::shaorma(int s, int p, char *C, char *U)
{
salt = s;
peper = p;
strcpy_s(meat, C);
strcpy_s(garlic, U);
}

shaorma::~shaorma()
{
cout << "The destructor war called.";
}

void shaorma::print()
{
cout << "Shaorma has garlic:" << garlic;
cout << "," << salt << "salt";
cout << peper << "peper";
cout << "meat type:" << meat << endl;
}

void shaorma::setgarlic(char *U)
{
strcpy_s(garlic, U);
}

char* shaorma::getmeat()
{
return meat;
}

void main()
{
shaorma S1, S2(5, 4, "yes", "lamb");
S1.print();
S2.print();
S1.setgarlic("No");
S2.getmeat();
cout << "Meat is :" << S2.getmeat();
_getch();

}
  • 0
    Где находится тело вашего конструктора по умолчанию?
  • 0
    shaorma S1, S2(5, 4, "yes", "lamb"); только второй получает эти параметры. Первый создается с помощью конструктора по умолчанию. Также у вас есть правильные параметры мяса и чеснока? Почему бы не использовать std::string чтобы вы могли есть мясо с любым именем, и установить чеснок в bool ?
Теги:
class
object

1 ответ

0
Лучший ответ

Вы объявили конструктор по умолчанию shaorma() но забыли его определить

class shaorma
{
//...
public:
    shaorma();
    //...

Этот конструктор используется при объявлении объекта S1 в заявлении основного

shaorma S1, S2(5, 4, "yes", "lamb");

Примите во внимание, что main должен иметь тип возврата int

int main()

Кроме того, строковые литералы в C++ имеют типы постоянных массивов символов. Поскольку вы используете строковые литералы в своей программе, то, например, функция setgarlic должна быть объявлена как

void setgarlic( const char* );
  • 0
    Это сработало, но теперь у меня есть другая проблема. L "Слишком маленький буфер" && 0
  • 0
    @ Андрей Габриэль Вы определили чеснок как имеющий только 3 символа, но пытаетесь скопировать не менее 5 символов строкового литерала "ягненок"
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню