[英]C++ Class using header and implemenation files
我已经整理了一个简单的C ++“Hello World”程序来练习; 不幸的是,在编译时我遇到了一些错误:
预期')'在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 }
您需要更改头文件以引用std::string
而不是string
因为它们是在std命名空间内定义的。
HelloWorld(std::string fName, std::string lName);
它适用于您的.cpp文件,因为您专门导入了此命名空间。 但是,解决方案不是在头文件中导入此命名空间(通常在C ++中是一个坏主意)。
如果代码与您粘贴到问题中的代码完全相同,那么错误的最可能原因是在头文件中,编译器没有识别string
含义,因为它不是全局命名空间中的符号。 尝试完全符合条件:
class HelloWorld
{
//...
HelloWorld( std::string fName, std::string lName );
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.