【发布时间】:2019-10-03 16:43:34
【问题描述】:
您将需要三个不同的文件:header.h、source.cpp 和 main.cpp。
// header.h
#pragma once
namespace A
{
namespace B
{
class C
{
public: static void f();
};
void g();
}
using namespace B;
}
// source.cpp
#include "Header.h"
namespace A
{
void C::f()
{
#pragma message( "Compiling " __FUNCTION__ )
}
void g()
{
#pragma message( "Compiling " __FUNCTION__ )
}
}
// main.cpp
#include "Header.h"
int main()
{
A::C::f();
A::g();
}
我预计没有错误,而是看起来类和函数属于不同的命名空间,尽管在同一范围内声明和实现:
1 > Source.cpp
1 > Compiling A::B::C::f
1 > Compiling A::g
1 > Generating Code...
1 > ConsoleApplication10.obj : error LNK2019 : unresolved external symbol "void __cdecl A::B::g(void)" ( ? g@B@A@@YAXXZ) referenced in function _main
代码由工具生成。
谢谢
【问题讨论】:
标签: c++ visual-c++ namespaces c++17