Din*_*gus 2 c++ namespaces header
所以我目前正在为我正在进行的一个更大的项目制作一个小原型,我已经完全陷入困境。我对 C++ 比较陌生,以前从未使用过头文件或命名空间。问题是,当我尝试使用我创建的命名空间时,它完全失败并且编译器(clang)返回未定义。
#include <iostream>
#include "bark.hpp"
using namespace bark;
int main() {
bark::woof();
}
Run Code Online (Sandbox Code Playgroud)
头文件:
#pragma once
#ifndef FUNCTIONS_HPP
#define FUNCTIONS_HPP
namespace bark {
void woof();
}
#endif
Run Code Online (Sandbox Code Playgroud)
带有函数的文件:
#include <iostream>
#include "bark.hpp"
void woof() {
std::cout << std::endl << "woof" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
在实现文件中,这个定义:
void woof()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
woof在全局命名空间中定义一个函数。因此,当您拨打电话时:
bark::woof();
Run Code Online (Sandbox Code Playgroud)
在main功能,没有 bark::woof定义,链接器将拒绝该计划联系起来。
要正确定义wooffrom namespace bark,您需要对其进行限定:
void bark::woof()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者引入 namespace bark,并在里面定义它:
namespace bark
{
void woof()
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |