我正在上课上的一个问题。这是关于创建一个“ addressType”类,并使用它与已经写好的主函数进行交互。
该程序无法正常工作,我得到的主要错误是“ addressType.cpp:6:7:错误:'addressType'类addressType {的重新定义。为什么认为我要重新宣布课程?我想我对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”
类addressType。

最佳答案

您需要做两件事:


完全摆脱.cpp文件中addressType的定义
在组成类的方法前加上addressType::前缀,例如void addressType::setAddress(string inputAddress) {...


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

10-04 21:09