"未解析的外部符号"引用另一个类

McG*_*gle 1 c++ visual-studio-2012

我正在尝试做一些我认为应该很容易的事情(作为C++ noob):从另一个类引用一个类.出于某种原因,我收到一个错误:

错误6错误LNK2019:未解析的外部符号"public:float*__thiscall Foo :: Test(void)"(?Test @ Foo @@ QAEPAMXZ)在函数"void __cdecl Test(void)"中引用(?Test @@ YAXXZ)Bar .OBJ

foo.h中

class Foo
{
public:
    Foo(void);
    ~Foo(void);
    float* Test();
};
Run Code Online (Sandbox Code Playgroud)

Foo.cpp中

#include "Foo.h"
float* Test()
{
    return new float[0];
}
Run Code Online (Sandbox Code Playgroud)

Bar.h

class Bar
{
public:
    Bar(void);
    ~Bar(void);
    void Test();
};
Run Code Online (Sandbox Code Playgroud)

Bar.cpp

#include "Bar.h"
#include "Foo.h"
void Test()
{
    Foo* foo = new Foo();
    foo->Test();
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器不允许我从Bar引用类Foo?我不知道这个错误意味着什么,也不知道如何调试它.

Ed *_* S. 5

#include "Foo.h"
float* Test()
{
    return new float[0];
}
Run Code Online (Sandbox Code Playgroud)

应该:

#include "Foo.h"
float* Foo::Test()
{
    return new float[0];
}
Run Code Online (Sandbox Code Playgroud)

您的版本只是定义了一个自由函数Test,与成员函数不同Foo::Test.

一个Unresolved external symbol错误意味着编译器告诉你嘿,你告诉我,我会找到这个东西的定义,但我看起来,无法在任何地方找到它.从本质上讲,你已经骗了它,它叫你出去.

另一个垃圾是调用约定(__cdecl,__thiscall)和错位(实际)函数名称(?Test@@YAXXZ).