来自其他源文件的函数名称标识符未定义

时间:2018-03-25 16:42:11

标签: c++

编译器发出标识符“func”未定义的错误:

enter image description here

我不知道为什么会出现这个错误,因为我链接了头文件,并声明了这个函数。我使用Visual Studio 2017社区。

我的代码:

foo.h中

#pragma once

class Foo {
    friend void func();
};

Foo.cpp中

#include "foo.h"

void func()
{
}

bar.h

#pragma once

class Bar {
    void baz();
};

bar.cpp

#include "bar.h"
#include "foo.h"

void Bar::baz()
{
    func(); // indentifier "func" is undefined
}

1 个答案:

答案 0 :(得分:1)

声明函数。

void func();

向类声明函数friend不会将函数声明为其他任何内容 - 该函数仅对类Foo可见。所以你应该实际声明这个功能。

减少混淆:声明函数的存在与将 friend发货声明为类不同。