我正在上课上的一个问题。这是关于创建一个“ 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) {...
这样,您只定义一次类(这是任何单个翻译单元中的要求),然后告诉编译器方法体属于哪个类。