gpt4 book ai didi

c++ - 未知函数已存在错误

转载 作者:行者123 更新时间:2023-11-28 05:00:15 25 4
gpt4 key购买 nike

当我编译我的代码时,我有一个奇怪的错误,它说成员函数已经存在于另一个类中,但错误不是这样说的

Error LNK2005 "public: void __thiscall membershipType::print(void)" (?print@membershipType@@QAEXXZ) already defined in personType.obj Project1 C:\Users\okpal\source\repos\Project1\Project1\Source.obj

还有

Error LNK1169 one or more multiply defined symbols found Project1 C:\Users\okpal\source\repos\Project1\Debug\Project1.exe 1

我想知道是否有人可以帮助找出错误我的类(class)代码在下面

#include <iostream>
#include <string>
using namespace std;
class addressType { //class defintions and prototypes member variables
public:
addressType();
string streetAddressNum, streetName, streetType, city, stateInitials;
int zipCode;
};
class personType
{
public:
personType();
string firstName;
string lastName;
int personNum;
char gender;
int personID;
addressType address;
void setInterest1(string interest1);//mutator
void setInterest2(string interest2);
void printPerson();
string GetInterest1() const; // Accessor
string GetInterest2() const;
private:
string SetInterest1;
string SetInterest2;
};
//define membershipType class
class membershipType :public personType
{
public:
char membership_type;
char membership_status;
membershipType(); // 1st constructor
membershipType(char, char); // 2nd constructor
void print();

};

void membershipType::print()
{
cout << GetInterest1();
}

persontype的源代码

#include "personType.h"
personType::personType()
{
int personNum = 0;
int personID = 0;
}
addressType::addressType() {
int zipCode = 0;
}
void personType::setInterest1(string interest1) {
SetInterest1 = interest1;
}//mutator
void personType::setInterest2(string interest2) {
SetInterest2 = interest2;
}
string personType:: GetInterest1() const
{
return SetInterest1;
}// Accessor
string personType:: GetInterest2() const {
return SetInterest2;
}

void personType :: printPerson() {//constructor

cout << firstName << " " << lastName << " " << gender << " " <<
personID << " " << address.streetAddressNum << " "
<< address.streetName << " " << address.streetType
<< " " << address.city << " " << address.stateInitials
<< " " << address.zipCode << " " << SetInterest1 << " " << SetInterest2 << endl;
}

最佳答案

您在第一个代码块中定义了 membershipType::print(),我认为它是从头文件中复制的。在 C++ 中,头文件的内容被插入到包含它们的每个文件中。据推测,您的程序中至少有两个包含此 header 的源文件。当这些源文件被编译成目标文件时,它们都将包含 membershipType::print() 的定义。当您尝试链接它们时,链接器将检测到这两个文件都包含相同符号的定义。它不知道在哪里使用哪个,所以它返回一个错误。

解决此问题的最简单方法是将 membershipType::print() 的定义移动到源文件中。您也可以通过使其内联来修复它。

关于c++ - 未知函数已存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46209915/

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