您好我制作了一个简单的C ++程序而且我遇到了错误而且我不知道我做错了什么。我是C ++语法的新手,所以我无法弄清楚我犯了什么错误导致了所述的链接器错误。以下是生成此错误的示例代码:
ITest.h
#ifndef ITest_H
#define ITest_H
//#[ ignore
#ifdef _MSC_VER
// disable Microsoft compiler warning (debug information truncated)
#pragma warning(disable: 4786)
#endif
//#]
//## auto_generated
#include <string>
//## auto_generated
#include <algorithm>
//## auto_generated
//## link itsNmNeighborhoodEntry
class NmNeighborhoodEntry;
//## class ITest
class ITest {
//#[ ignore
//// Constructors and destructors ////
public :
//## auto_generated
virtual ~ITest();
//// Relations and components ////
protected :
NmNeighborhoodEntry* itsNmNeighborhoodEntry; //## link itsNmNeighborhoodEntry
};
#endif
ITest.cpp
//## auto_generated
#include "ITest.h"
//## link itsNmNeighborhoodEntry
#include "NmNeighborhoodEntry.h"
//## class ITest
ITest::~ITest() {
}
Test1.h
#ifndef Test1_H
#define Test1_H
//#[ ignore
#ifdef _MSC_VER
// disable Microsoft compiler warning (debug information truncated)
#pragma warning(disable: 4786)
#endif
//#]
//## auto_generated
#include <string>
//## auto_generated
#include <algorithm>
//## class Test1
#include "ITest.h"
//## auto_generated
class NmNeighborhoodEntry;
//## class Test1
class Test1 : public ITest {
//#[ ignore
// Default Constructor is Private
public:
Test1();
// Default Copy Constructor is Private
private:
Test1(const Test1& self);
// Default Assignment Operator is Private
private:
Test1& operator=(const Test1& aTest1);
//#]
//// Constructors and destructors ////
public :
//## auto_generated
~Test1();
NmNeighborhoodEntry* getNmNeighborhoodEntry();
};
#endif
Test1.cpp
//## auto_generated
#include "Test1.h"
//## auto_generated
#include "NmNeighborhoodEntry.h"
NmNeighborhoodEntry* itsNmNeighborhoodEntry;
//## class Test1
Test1::~Test1() {
}
Test1::Test1() {
}
NmNeighborhoodEntry* getNmNeighborhoodEntry() {
//return itsNmNeighborhoodEntry;
return NULL;
}
NmNeighborhoodEntry.h
#ifndef NmNeighborhoodEntry_H
#define NmNeighborhoodEntry_H
//#[ ignore
#ifdef _MSC_VER
// disable Microsoft compiler warning (debug information truncated)
#pragma warning(disable: 4786)
#endif
//#]
//## auto_generated
#include <string>
//## auto_generated
#include <algorithm>
//## class NmNeighborhoodEntry
class NmNeighborhoodEntry {
//#[ ignore
// Default Constructor is Private
private:
NmNeighborhoodEntry();
// Default Copy Constructor is Private
private:
NmNeighborhoodEntry(const NmNeighborhoodEntry& self);
// Default Assignment Operator is Private
private:
NmNeighborhoodEntry& operator=(const NmNeighborhoodEntry& aNmNeighborhoodEntry);
//#]
//// Constructors and destructors ////
public :
//## auto_generated
~NmNeighborhoodEntry();
bool myIsPending; //## attribute myIsPending
unsigned short index; //## attribute myNodeIndex
};
#endif
NmNeighborhoodEntry.cpp
//## auto_generated
#include "NmNeighborhoodEntry.h"
//## class NmNeighborhoodEntry
NmNeighborhoodEntry::~NmNeighborhoodEntry() {
}
driver.cpp
//#include "ITest.h"
#include "Test1.h"
//#include "Test2.h"
#include "NmNeighborhoodEntry.h"
Test1 *test1;
//Test2 *test2;
NmNeighborhoodEntry* myNmNeighborhoodEntry;
void main() {
test1 = new Test1;
//test2 = new Test2;
//test1->itsNmNeighborhoodEntry = NULL;
myNmNeighborhoodEntry = test1->getNmNeighborhoodEntry();
}
答案 0 :(得分:0)
您收到的错误消息表示未定义引用的“符号”。它还告诉您“函数”在哪个“函数”中引用了“符号”。
您可能在某处缺少函数或方法实现。
编辑:
NmNeighborhoodEntry* getNmNeighborhoodEntry() {
//return itsNmNeighborhoodEntry;
return NULL;
}
这是你的错误;它需要让类名限定为这样。
NmNeighborhoodEntry* Test1::getNmNeighborhoodEntry() {
//return itsNmNeighborhoodEntry;
return NULL;
}
你这样做的方式声明了一个全局函数。您需要在函数名称之前使用Test1 ::来向编译器指示这是类Test1的方法的实现。