簡體   English   中英

如何在C ++中創建在名稱空間內定義的類的對象

[英]How to create an object of class defined inside namespace in c++

namespace t {
    class A {};
}

如何創建A類對象?

編輯:

namespace beta {
  class TESSDLL_API TessBaseAPI 
  { 
     public: 
           TessBaseAPI(); 
           virtual ~TessBaseAPI(); 
  }
}

這是在beta名稱空間內定義的類。 現在如何調用構造函數?

tess = new beta::TessBaseAPI(); 

正確?

像通常那樣。 唯一的區別是A在名稱空間t 所以你可以 :

每次要使用A時,請使用范圍解析運算符

t::A a;

使用using directive

using namespace t; 
A a;

或者,如Luc Danton指出的那樣,使用using declaration

using t::A;
A a;

按照您的編輯:

假設您的類聲明以;結尾;

namespace beta {
  class TESSDLL_API TessBaseAPI 
  { 
     public: 
           TessBaseAPI(); 
           virtual ~TessBaseAPI(); 
  };
}

然后,調用構造函數的正確方法是:

beta::TessBaseAPI * tess = beta::TessBaseAPI();

要么

beta::TessBaseAPI tess;

要么

namespace t
{
    A a;
}

要么

t::A a;

在第一種情況下, a位於命名空間t (實際上其全名是::t::a )。 在第二種情況下, a是全局的。

(注意:你的class A{}缺少;之后}

namespace t
{
    class A {} a;
    A another_a;
}

現在使用t::at::another_a

如果要制作另一個對象:

t::A another_a_out_of_namespace_scope;

在類的聲明后使用分號,並使用:

t::A my_object;

muntoo的答案允許您創建該類的單個實例,這也是正確的。

對於一個名為x的對象;

t::A x;

暫無
暫無

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

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