gpt4 book ai didi

c++ - 我可以在稍后声明的 namespace 中定义名称吗?

转载 作者:行者123 更新时间:2023-12-04 17:05:26 24 4
gpt4 key购买 nike

如果我定义一个 namespace在包含函数声明、类/结构定义的接口(interface)的多个头文件中,然后在源文件中我应该在命名空间内部还是外部定义这些名称?例如:

// file.h
namespace mylibNS{
void func();
struct Adder{
int operator()(int const&, int const&) const;
};
}

// file.cpp
#include "file.h"

void mylibNS::func(){}
int mylibNS::Adder::operator()(int const& x, int const& y) const{
return + y;
}
或者我应该这样做:
// file.cpp
#include "file.h"

namespace myibNS{
void func(){}
int Adder::operator()(int const& x, int const& y) const{ // this doesn't compile
return + y;
}
}
  • 这两个版本有什么区别,我应该使用哪一个?事实上我习惯使用第一个。
  • 第二个用于定义函数 func但编译器无法定义 struct Adder 的调用运算符:“加法器尚未声明”。
  • 最佳答案

    这两种方式都很好且等效。第一种方式更明确且更易于阅读,尤其是在文件中有多个命名空间的情况下。第二种方法编写起来更方便,而且只要清楚命名空间中包含的内容就不会那么困惑。

    关于c++ - 我可以在稍后声明的 namespace 中定义名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66754781/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com