ฉันพบปัญหานี้เมื่อพยายามรวบรวมโค้ด ฉันคิดว่าอาจเกิดจากไฟล์ส่วนหัวรวมเข้าด้วยกัน แต่เท่าที่ฉันสามารถบอกได้ ฉันไม่พบปัญหาใดๆ กับไฟล์ส่วนหัวของฉัน
ข้อผิดพลาด LNK1169 พบสัญลักษณ์ที่กำหนดทวีคูณตั้งแต่หนึ่งตัวขึ้นไป Homework2 D:\05Development\04 C_C++\C\DS Alg class\Homework2\Debug\Homework2.exe 1
นอกจากนี้ยังมีข้อผิดพลาดที่บอกฉันว่ามีการประกาศฟังก์ชัน Assert() ที่อื่นแล้ว
ข้อผิดพลาด LNK2005 "void __cdecl Assert(bool,class std::basic_string,class std::allocator >)" (?Assert@@YAX_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@ 2@@std@@@Z) กำหนดไว้แล้วใน DataBase.obj Homework2 D:\05Development\04 C_C++\C\DS Alg class\Homework2\Homework2\dbTest.obj 1
นี่คือโครงสร้างของรหัสของฉัน:
การทำงาน
void Assert(bool val, string s)
{
if (!val)
{
cout << "Assertion Failed!!: " << s << endl;
exit(-1);
}
}
อยู่ใน Constants.h
รายการคลาสเสมือนประกอบด้วย Constants.h
#pragma once // List.h
#include "Constants.h"
รายการอาร์เรย์ประกอบด้วยคลาส List ในคลาส AList จะเรียกฟังก์ชัน Assert
#pragma once //AList.h
#include "List.h"
...
Assert((pos >= 0) && (pos < listSize), "Position out of range");
ในคลาส DataBase ฉันสร้างสมาชิก AList
private:
AList<CData> set;
ส่วนหัวมีลักษณะดังนี้: #pragma หนึ่งครั้ง #include "AList.h" #include "CData.h"
และ CData.h มีลักษณะดังนี้:
#pragma once
class CData
{
private:
std::string m_name;
int m_x;
int m_y;
public:
CData(std::string str = "null", int x = 0, int y = 0) : m_name(str), m_x(x), m_y(y) {}
// Helper functions
const std::string& GetName() const { return this->m_name; }
const int& GetX() const { return this->m_x; }
const int& GetY() const { return this->m_y; }
};
Assert
ไม่ควรอยู่ในConstants.h
ควรมีการประกาศเท่านั้น (void Assert(bool val, string s);
) - person Jabberwocky   schedule 15.10.2018