gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:10:13 26 4
gpt4 key购买 nike

我正在处理类里面的一个问题。它是关于创建一个“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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com