Да, это неправильно.
скажет, что этот код в файл с именем MyFile.cpp
, то ваш кусок коды предполагает, что объявление класса находится в файле "Sales_item.h"
в той же папке, что и исходный файл MyFile.cpp
.
#include фактически директива копирования/вставки, то скопируйте содержимое указанного файла в текущем файле, а компилятор компилирует его. Теперь файл Sales_item.h
не существует, и компилятор дает вам сообщение об ошибке, что он не может его найти.
Правильный способ объявить и определить класс:
#include <iostream>
// #include "Sales_item.h"
// What should be in the "Sales_item.h" file
#include <string>
class Sales_item
{
public:
Sales_item(std::string itemName) //constructor
{
m_Name = itemName;
};
const char * GetName()
{
return m_Name.c_str();
}
private: //member variables
std::string m_Name;
};
// End "Sales_item.h"
int main()
{
std::string bookName;
std::cin >> bookName; //requires the user to type a string on the command prompt
Sales_item book(bookName); //construct the object
std::cout << book.GetName() << std::endl; // retrieve & print the item name on the command prompt
return 0;
}
Еще один момент является то, что в C++ вообще ваши классы объявлены в заголовочном файле (.h/.hpp), и определяется в файле (.cpp). В моем примере класс объявлен и определен в одном файле простым. Это другая тема, чем то, о чем спрашивает ваш вопрос, но читайте больше о «описании vs definition» на C++, если вы хотите получить дополнительную информацию о том, как кодировать хорошие методы кодирования на C++.
Лучший подход, но более сложным, будет кодировать мой пример, как это: https://gist.github.com/jeanmikaell/5636990.
За любую книгу, я рекомендую вам прочитать этот сжатый учебник перед программированием: http://www.cplusplus.com/doc/tutorial/
Это означает, что он не может найти файл sales_item.h. Это не стандартный заголовок или что-то еще. Вы, вероятно, должны сделать это и бросить в той же папке. – chris
Показать файл 'Sales_item.h' (который, возможно, должен быть назван' sales_item.hh'); также покажите, как вы компилируете свой пример и укажите, какой компилятор и система вы используете. –
Это не определение класса. – ChiefTwoPencils