C ++ .h和.cpp文件分开

时间:2016-03-05 19:06:24

标签: c++

我正在尝试将我的c ++代码分成一个标头和一个cpp文件,但是解释器显示了一些错误。

这是我的代码:

Password.h:

var dailyTasks = document.getElementById("ToDo");
var toDoSpace = document.getElementById("toDospace");
document.getElementById("addToDo").addEventListener('click', function addToDo()
{

 var aToDo = document.getElementById("newToDo").value;
  ToDos.push(aToDo);
  var row = document.createElement("tr");
  toDoSpace.appendChild(row);
  var cell= row.insertCell(0);
  cell.innerHTML =  ToDos[0] +  "<div class ='counter'></div>";

 //this did not work 
  if(document.getElementsByTagName("tr") == 5)
  {

    cell.innerHTML = "too many TODos";
  }

Password.cpp:

#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

错误:

#include <string>
#include "Password.h"

using std::string;

void Password::setAliasName(string aliasName) {
    aliasName_ = aliasName;
}
void Password::setHashOfPassword(int hashOfPassword) {
    hashOfPassword_ = hashOfPassword;
}

有人有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您需要在宣布课程之前移动using std::string

#ifndef PASSWORD_H
#define PASSWORD_H

#include <string>

using std::string;

class Password {
…

并将其从.cpp文件中删除。

此外,您可能希望使用#pragma once而不是传统的#ifndef/#define/#endif,最后您可能希望在需要时使您的参数和方法成为常量。

答案 1 :(得分:1)

你需要移动

#include <string>
using std::string;

Password.h内,您可以从Password.cpp删除这两行。

答案 2 :(得分:0)

只需将std::添加到您的标头文件中的每个string,请记住,您绝不能在那里使用usingusing namespace!您还应该将所有标题都包含在您使用它们的文件中。