我在构造函数的实现方面遇到了一些麻烦,我无法弄清楚是什么问题。我花了很多时间来解决这个问题:感谢某种建议。
主要代码是:
#include "stdafx.h"
#include "Rocket.h"
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
Rocket* rocket;
rocket=new Rocket();
//LLA* position=rocket->positionLLA;
return 0;
}
Rocket.h
#pragma once
#include "LLA.h"
class Rocket {
public:
Rocket(); // Default constructor
LLA* positionLLA;
};
Rocket.cpp
#include "stdafx.h"
#include "Rocket.h"
#include <iostream>
using namespace std;
Rocket::Rocket() // Default constructor
{
// Initialise the position
positionLLA=new LLA();
}
错误说:
error LNK2019: unresolved external symbol "public: __thiscall Rocket::Rocket(void)" (??0Rocket@@QAE@XZ) referenced in function _main.
我知道错误与未声明变量有关,但我认为我已经声明了所有类和构造函数。
PS:我正在使用Visual Studio 2008来添加依赖项。
答案 0 :(得分:3)
我假设您的.h文件中正确定义了LLA
您是将Rocket.cpp编译为Rocket.o,将main.cpp编译为main.o,然后将两个目标文件链接在一起?
您的错误似乎暗示链接器无法从Rocket.o获取符号信息,这通常意味着找不到Rocket.o
哦,作为一个细节,由于Rocket使用LLA *,你不需要在Rocket.h中包含LLA.h,你可以简单地转发声明
class LLA;
答案 1 :(得分:-2)
您可能希望在标头文件中添加#ifndef
,#define
和#endif
。在不同的文件中包含多个相同的东西会导致复杂化。