簡體   English   中英

c++ 命名空間 class 沖突

[英]c++ namespace class conflict

我將其命名為 next.h 並包含在 main.cpp 片段中

我已經創建了兩個庫,一個用於主要的 function,另一個僅用於擁有我想為 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;
}

以下程序的output如下:

5

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

我的問題是它應該是 5.000 但為什么它是 int 類型而不是 double 類型?

好的,只是總結評論:

  • 不要使用#include <bits/stdc++.h> 相反,只需在代碼中單獨包含您需要使用的每個 header。 原因:代碼可讀性差,並非每個編譯器都支持此指令。 更多: 為什么我不應該#include <bits/stdc++.h>?
  • 也不要使用using namespace *name*命令。 為清楚起見:您可以使用名稱空間,只是不要使用using ,而是使用*namespace name*:: ,例如std::cout 原因:代碼可讀性差,你也可能會弄亂名稱(比如當你有function_name function 並且命名空間也有一個同名的 function 時,編譯器將不知道使用哪個(或者你得到一個錯誤)。
  • 回答您的問題: std::cout在打印數字時省略零,因此 5.00 將只是 5,但 5.278 將是 5.278。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM