C++;使用头文件和实现文件初始化 我已经把一个简单的C++“Hello World”程序结合起来练习了;不幸的是,在编译时,我遇到了一些错误:

C++;使用头文件和实现文件初始化 我已经把一个简单的C++“Hello World”程序结合起来练习了;不幸的是,在编译时,我遇到了一些错误:,c++,C++,fName之前应为“') 错误:“HelloWorld::HelloWorld(std::string,std::string)”的原型与类“HelloWorld”中的任何原型都不匹配 下面是我的代码,有人能帮我理解我遗漏了什么/忽略了什么吗?谢谢 标题: 1 #ifndef HELLOWORLD_H_ 2 #define HELLOWORLD_H_ 3 #include <string> 4 5 class HelloWorld 6 { 7

fName之前应为“')

错误:“HelloWorld::HelloWorld(std::string,std::string)”的原型与类“HelloWorld”中的任何原型都不匹配

下面是我的代码,有人能帮我理解我遗漏了什么/忽略了什么吗?谢谢

标题:

  1 #ifndef HELLOWORLD_H_ 
  2 #define HELLOWORLD_H_
  3 #include <string>
  4 
  5 class HelloWorld
  6 {
  7     public:
  8         HelloWorld();
  9         HelloWorld(string fName, string lName);
 10         ~HelloWorld();
 11 };
 12 
 13 #endif
  1 #include <iostream>
  2 #include <string>
  3 #include "HelloWorld.h"
  4 
  5 using namespace std;
  6 
  7 HelloWorld::HelloWorld()
  8 {
  9     cout << "Hello, anonymous!";
 10 }
 11 
 12 HelloWorld::HelloWorld(string fName, string lName)
 13 {
 14     cout << "Hello, " << fName << ' ' << lName << endl;
 15 }
 16 
 17 HelloWorld::~HelloWorld()
 18 {
 19     cout << "Goodbye..." << endl;
 20 }
1\ifndef HELLOWORLD\u
2#定义HELLOWORLD#_
3#包括
4.
5级HelloWorld
6 {
7公众:
8 HelloWorld();
9 HelloWorld(字符串fName,字符串lName);
10~ HelloWorld();
11 };
12
13#endif
实施:

  1 #ifndef HELLOWORLD_H_ 
  2 #define HELLOWORLD_H_
  3 #include <string>
  4 
  5 class HelloWorld
  6 {
  7     public:
  8         HelloWorld();
  9         HelloWorld(string fName, string lName);
 10         ~HelloWorld();
 11 };
 12 
 13 #endif
  1 #include <iostream>
  2 #include <string>
  3 #include "HelloWorld.h"
  4 
  5 using namespace std;
  6 
  7 HelloWorld::HelloWorld()
  8 {
  9     cout << "Hello, anonymous!";
 10 }
 11 
 12 HelloWorld::HelloWorld(string fName, string lName)
 13 {
 14     cout << "Hello, " << fName << ' ' << lName << endl;
 15 }
 16 
 17 HelloWorld::~HelloWorld()
 18 {
 19     cout << "Goodbye..." << endl;
 20 }
1#包括
2#包括
3#包括“HelloWorld.h”
4.
5使用名称空间标准;
6.
7 HelloWorld::HelloWorld()
8 {

9 cout您需要将头文件更改为引用
std::string
,而不是
string
,因为它们是在std名称空间中定义的

HelloWorld(std::string fName, std::string lName);

它可以在.cpp文件中工作,因为您专门导入了这个名称空间。但是,解决方案不是在头文件中导入这个名称空间(一般来说,在C++中这是个坏主意).

如果代码与您粘贴到问题中的代码完全相同,则最可能的错误原因是在标题中,编译器没有识别
字符串的含义,因为它不是全局命名空间中的符号。请尝试完全限定它:

class HelloWorld
{
//...
   HelloWorld( std::string fName, std::string lName );
};

如果必须的话,您可以导入单个名称,比如使用std::string
。我仍然不太愿意,但这并没有破坏使用名称空间的全部目的。是否有任何情况下建议将名称空间导入头文件?即使
使用std::string
也不是一个好主意使用std::string总是更好在标题文件中的声明中,请不要在此处发布的代码中使用行号,特别是如果您在问题中没有提及行号,则更不要使用行号。行号会使您很难将代码复制并粘贴到文件中进行编译。