[英]Unresolved external symbol - C++
I tried to start to code in C++ after a long time. 很久以后,我试图开始用C ++编写代码。
I started a little project and got an error after little time :( 我开始了一个小项目,经过一段时间后出现了一个错误:(
I have two classes: MyClass and OtherClass (just as an example) 我有两个类:MyClass和OtherClass(仅作为示例)
My main.cpp: 我的main.cpp:
#include "MyClass.h"
#include "OtherClass.h"
int main(){
OtherClass* otherClass = MyClass::doSomething();
return 0;
}
OtherClass.h: OtherClass.h:
#pragma once
class OtherClass
{
public:
OtherClass(int a, int b, int c);
~OtherClass();
private:
int a, b, c;
};
OtherClass.cpp: OtherClass.cpp:
#include "OtherClass.h"
OtherClass::OtherClass(int a, int b, int c)
{
this->a = a;
this->b = b;
this->c = c;
}
OtherClass::~OtherClass(){}
MyClass.h: MyClass.h:
#pragma once
#include "OtherClass.h"
class MyClass
{
public:
static OtherClass* doSomething();
private:
MyClass();
~MyClass();
};
MyClass.cpp: MyClass.cpp:
#include "MyClass.h"
MyClass::MyClass(){}
MyClass::~MyClass(){}
OtherClass* doSomething(){
return new OtherClass(0, 0, 0);
}
For me everything seems fine. 对我来说,一切似乎都很好。
I'm used to code in C# so maybe I'm missing something important (I guess because I'm getting this error). 我曾经用C#编写代码,所以也许我错过了一些重要的事情(我想是因为出现此错误)。
The error I get: 我得到的错误:
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
Hope you can help me :) 希望你能帮我 :)
In MyClass.cpp, the function: 在MyClass.cpp中,该函数:
OtherClass* doSomething(){
return new OtherClass(0, 0, 0);
}
Should be qualified with a class name: 应使用类名进行限定:
OtherClass* MyClass::doSomething(){
return new OtherClass(0, 0, 0);
}
Your problem is the definition of doSomething()
: you defined a global function rather than a member function: 您的问题是
doSomething()
的定义:您定义了全局函数而不是成员函数:
OtherClass* doSomething(){
return new OtherClass(0, 0, 0);
}
You meant to write 你想写
OtherClass* MyClass::doSomething(){
return new OtherClass(0, 0, 0);
}
In your definition, you forgot MyClass::
在您的定义中,您忘记了
MyClass::
OtherClass* MyClass::doSomething(){
return new OtherClass(0, 0, 0);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.