是的,这是错误的。
假设这段代码在一个名为 的文件中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) 文件中定义。在我的示例中,该类在同一个文件中简单地声明和定义。这与您的问题所要求的主题不同,但如果您想了解有关如何在 C++ 中使用良好编码实践进行编码的更多信息,请阅读有关 C++ 中“声明与定义”的更多信息。
最好但更复杂的方法是像这样编写我的示例:https ://gist.github.com/jeanmikaell/5636990 。
在任何一本书中,我建议你在编程之前阅读这个简洁的教程:http ://www.cplusplus.com/doc/tutorial/