【问题标题】:c++ namespace class conflictc++命名空间类冲突
【发布时间】:2021-11-22 07:48:10
【问题描述】:

我将其命名为 next.h 并包含在 main.cpp sn-p 中

我创建了两个库,一个用于主要功能,另一个仅用于创建类 我想练习 OOPS,所以我突然想到使用命名空间来了解它们的全部潜力,但我对为什么它不能按预期工作感到困惑

#include<bits/stdc++.h>
namespace custom
{
class aries
{
    public:
    int data;
    
};
  }

 namespace custom2
 {
class aries
{
    public:
    double data1;  
    
};

 }


#include<bits/stdc++.h>
#include "next.h"
using namespace std;
using namespace custom;
using namespace custom2;

 int main()
{
custom2::aries a;
a.data1=5.000;
cout<<a.data1;

return 0;
}

以下程序的输出如下:

5

...Program finished with exit code 0
Press ENTER to exit console.

我的问题是它应该是 5.000 但为什么它是 int 类型而不是 double 类型?

【问题讨论】:

标签: c++ class namespaces


【解决方案1】:

好了,简单总结一下cmets:

  • 不要使用#include &lt;bits/stdc++.h&gt;。相反,只需在代码中单独包含您需要使用的每个标头。原因:代码可读性差,并不是每个编译器都支持这个指令。更多:Why should I not #include <bits/stdc++.h>?
  • 也不要使用using namespace *name* 命令。为清楚起见:您可以使用命名空间,但不要使用using,而是使用*namespace name*::,例如std::cout。原因:代码可读性差,你也可以弄乱名称(比如当你有 function_name 函数并且命名空间也有一个同名的函数时,编译器将不知道使用哪个(或你得到一个错误)。
  • 回答您的问题:std::cout 在打印数字时省略零,因此 5.00 将只是 5,但 5.278 将是 5.278。

【讨论】:

  • 瞧!明白了:D
猜你喜欢
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多