很长一段时间后,我尝试开始使用 C++ 编写代码。
我开始了一个小项目,但不久后就出现了一个错误:(
我有两个类:MyClass 和 OtherClass(仅作为示例)
我的 main.cpp:
#include "MyClass.h"
#include "OtherClass.h"
int main(){
OtherClass* otherClass = MyClass::doSomething();
return 0;
}
其他类.h:
#pragma once
class OtherClass
{
public:
OtherClass(int a, int b, int c);
~OtherClass();
private:
int a, b, c;
};
其他类.cpp:
#include "OtherClass.h"
OtherClass::OtherClass(int a, int b, int c)
{
this->a = a;
this->b = b;
this->c = c;
}
OtherClass::~OtherClass(){}
我的类.h:
#pragma once
#include "OtherClass.h"
class MyClass
{
public:
static OtherClass* doSomething();
private:
MyClass();
~MyClass();
};
我的类.cpp:
#include "MyClass.h"
MyClass::MyClass(){}
MyClass::~MyClass(){}
OtherClass* doSomething(){
return new OtherClass(0, 0, 0);
}
对我来说一切似乎都很好。
我习惯用 C# 编写代码,所以我可能遗漏了一些重要的东西(我想是因为我遇到了这个错误)。
我得到的错误:
Error 1 error LNK2019: Unresolved external symbol ""public: static class OtherClass * __cdecl MyClass::doSomething(void)" (?doSomething@MyClass@@SAPAVOtherClass@@XZ)" in function "_main". D:\Projects\TestProject\main.obj TestProject
希望你能帮助我:)
最佳答案
在 MyClass.cpp 中,函数:
OtherClass* doSomething(){
return new OtherClass(0, 0, 0);
}
应该用类名限定:
OtherClass* MyClass::doSomething(){
return new OtherClass(0, 0, 0);
}
关于c++ - 未解析的外部符号 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20085224/