2014-11-16 3 views
0

Мне нужно сделать проблему C++ для школы с классами и объектами.Класс и объект Ошибки Microsoft Visual Studio

Создать класс «Шаорма».

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

-Член функции: неявные конструкторы, параметры

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

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

-Возвращение мясо, деструктор ;

Я использую Microsoft Visual Studio 2013 и я получаю эти ошибки:

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

-Error 1 error 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'? –

ответ

0

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

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

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

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

Примите во внимание, что основной должен имеют возвратный тип int

int main() 

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

void setgarlic(const char*); 
+0

Это сработало, но теперь у меня другая проблема. L «Буфер слишком мал» && 0 –

+0

@ Andrei Gabriel Вы определили чеснок как имеющий только 3 символа, но пытаетесь скопировать не менее 5 символов строкового литерала «lamb» –

+0

Это сработало! Sry для ошибок noob, но я в начале, и я пытаюсь понять все ошибки и код. Спасибо большое! –

Смежные вопросы