在C ++中将常量字符串放在哪里:静态类成员或匿名命名空间 [英] Where to put constant strings in C++: static class members or anonymous namespaces

查看:137
本文介绍了在C ++中将常量字符串放在哪里:静态类成员或匿名命名空间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要定义一些只有一个类使用的常量字符串。看起来我有三个选项:


  1. 将字符串直接嵌入到使用它们的位置。

    li>
  2. 将它们定义为类的私有静态常量成员:


(枚举后代码格式化错误。)

  // Ah 
class A {
private:
static const std :: string f1;
static const std :: string f2;
static const std :: string f3;
};

//A.cpp
const std :: string f1 =filename1;
const std :: string f2 =filename2;
const std :: string f3 =filename3;

//此文件中使用字符串




  1. 在cpp文件中的匿名命名空间中定义它们:

(枚举后代码格式化错误。)

  // A.cpp 
namespace {
const std :: string f1 =filename1;
const std :: string f2 =filename2;
const std :: string f3 =filename3;
}

//在此文件中使用字符串

给定这些选项,你会推荐哪个,为什么?感谢。

解决方案

我会将它们放在CPP文件中的匿名命名空间中。它使它们对实现是私有的,并且同时使得作为实现的一部分的非成员函数(例如 operator )可见。 p>

I need to define some constant strings that will be used only by one class. It looks like I have three options:

  1. Embed the strings directly into locations where they are used.

  2. Define them as private static constant members of the class:

(Code formatting is buggy after enumerations.)

//A.h  
class A {  
private:  
   static const std::string f1;  
   static const std::string f2;  
   static const std::string f3;  
};  

//A.cpp  
const std::string f1 = "filename1";  
const std::string f2 = "filename2";  
const std::string f3 = "filename3";  

//strings are used in this file  

  1. Define them in an anonymous namespace in the cpp file:

(Code formatting is buggy after enumerations.)

//A.cpp  
namespace {  
  const std::string f1 = "filename1";  
  const std::string f2 = "filename2";  
  const std::string f3 = "filename3";  
}  

//strings are used in this file  

Given these options, which one would you recommend and why? Thanks.

解决方案

I'd place them in anonymous namespace in the CPP file. It makes them private to the implementation and at the same moment makes it visible to the non-member functions that are part of implementation (such as operator<<).

这篇关于在C ++中将常量字符串放在哪里:静态类成员或匿名命名空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆