c++ - 未解析的外部符号 - C++

标签 c++ compiler-errors

很长一段时间后,我尝试开始使用 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/

相关文章:

c# - 我的 visual studio 插件如何在构建之前以与 "Remove and Sort Usings"相同的方式检测编译器错误?

c++ - 使用修改后的 floyd warshall 打印给定节点的黑白最短路径

c# - 视觉 C# 错误 : The type or namespace name 'Compression' does not exist in the namespace 'System.IO'

c++ - 如何使用 Daffodil 将旧的 VC6 项目迁移到 VS2010

c++ - 未在禁用的 QCheckBox 上调用 mousePressEvent()

VBA 字典,需要类 424 对象错误

android - Android Delphi xe7中的错误

c++ - 大小未知的数组作为类成员,用于在运行时制作数组对象(对象创建时间)

c++ - 以编程方式将目录添加到 Windows PATH 环境变量

c++ - 适当的 boolean 随机生成器(伯努利分布)