c++ - 头文件问题; "redefinition of class"

标签 c++ repl.it

我正在处理类里面的一个问题。它是关于创建一个“addressType”类,并使用它与已经写出的主函数进行交互。 该程序无法运行,我得到的主要错误是“addressType.cpp:6:7: error: redefinition of 'addressType' class addressType {”。为什么它认为我要重新声明类(class)?我想我只是对 C++ 语法不够熟悉。我对 C++ 真的没有经验,我是一个 Java 人。

这是我的 .h 文件代码示例...

#ifndef ADDRESSTYPE_H_INCLUDED
#define ADDRESSTYPE_H_INCLUDED

#include <string>
#include <cstring>
#include <iostream>

using namespace std;

class addressType {

private:
  string address;
  string city;
  string state;
  int zipcode;

public:
  addressType();

  addressType(string inputAddress, string inputCity, string inputState, int inputZipcode);

  void setAddress(string inputAddress);

  void setCity (string inputCity);

//more functions i didn't paste
}; #endif

等等。这是 .cpp 的示例:

#include "addressType.h"
#include <iostream>

using namespace std;

class addressType {

private:
  string address;
  string city;
  string state;
  int zipcode;

public
  addressType() {
    address = "aa";
    city = "aa";
    state = "XX";
    zipcode = 10000;
  }

  addressType(string inputAddress, string inputCity, string inputState, int inputZipcode) {
    address = inputAddress;
    city = inputCity;
    setState(inputState);
    setZipcode(inputZipcode);
  }

  void setAddress(string inputAddress) {
    address = inputAddress;
  }
  //more functions I didn't paste
};

我得到的主要信息是: addressType.cpp:6:7: 错误:'addressType' 的重新定义 类地址类型。

最佳答案

你需要做两件事:

  • 完全去掉.cpp文件中addressType的定义

  • 在组成类的方法前加上addressType::,例如void addressType::setAddress(string inputAddress) {...

这样,您只需定义一次类(这是在任何单个翻译单元中的要求),并告诉编译器方法主体属于哪个类。

关于c++ - 头文件问题; "redefinition of class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57965470/

相关文章:

c++ - 在 C++ 中使用 gmail smtp (安全层)发送电子邮件

c++ - vector <bool>常量成员函数

python - 我打开的以前不存在的文件没有显示。 Python-REPL.it

c++ - 内置函数以查看CPP中的成员变量

c++ - 强名称 dll - 如何排除故障?

javascript - .hasPermissions 不起作用?类型错误 : Cannot read property of undefined client?

javascript - 如何使用 Javascript 在 Repl.it 中显示输出?

java - 调试我的逃逸速度程序中的问题

c++ - 在 C/C++ 中将两个二维数组初始化为零

scheme - #f 在 repl.it 中输出方案结果