C++ .h 和.cpp文件分开
C++ .h and .cpp file separate
我试图将我的c ++代码分离到一个标头和一个cpp文件,但解释器显示一些错误。
这是我的代码:
密码.h:
#ifndef PASSWORD_H
#define PASSWORD_H
class Password {
private:
string aliasName_;
int hashOfPassword_;
public:
void setAliasName(string aliasName);
void setHashOfPassword(int hashOfPassword);
string getAliasName() { return aliasName_; }
int getHashOfPassword() { return hashOfPassword_; }
};
#endif
密码.cpp:
#include <string>
#include "Password.h"
using std::string;
void Password::setAliasName(string aliasName) {
aliasName_ = aliasName;
}
void Password::setHashOfPassword(int hashOfPassword) {
hashOfPassword_ = hashOfPassword;
}
错误:
Error C2065 'aliasName_': undeclared identifier Xpassword.cpp 7
Error C2511 'void Password::setAliasName(std::string)': overloaded member function not found in 'Password' Xpassword.cpp 6
Error C3646 'aliasName_': unknown override specifier Xpassword.h 6
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int Xpassword.h 6
Error C2061 syntax error: identifier 'string' Xpassword.h 9
Error C3646 'getAliasName': unknown override specifier Xpassword.h 11
Error C2059 syntax error: '(' Xpassword.h 11
Error C2334 unexpected token(s) preceding '{'; skipping apparent function body Xpassword.h 11
有人有什么想法吗?
您需要在
声明类之前移动using std::string
:
#ifndef PASSWORD_H
#define PASSWORD_H
#include <string>
using std::string;
class Password {
…
并将其从.cpp文件中删除。
此外,您可能希望使用#pragma once
而不是传统的#ifndef/#define/#endif
,最后您可能希望在需要时使参数和方法持续存在。
你需要移动
#include <string>
using std::string;
在 Password.h
内部,您可以从 Password.cpp
中删除这两行。
只需将std::
添加到头文件中的每个string
,请记住,您永远不应该在那里使用using
或using namespace
!还应包含使用它们的文件的所有标头。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?