如何在c ++中创建在命名空间内定义的类对象

时间:2011-09-12 06:42:46

标签: c++

namespace t {
    class A {};
}

如何创建类A的对象?

编辑:

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

这是beta命名空间中定义的类。现在我如何调用构造函数?是

tess = new beta::TessBaseAPI(); 

正确?

5 个答案:

答案 0 :(得分:4)

正如您通常所做的那样。唯一的区别是A位于命名空间t内。所以你可以:

每次要使用A时都使用scope resolution operator

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;

答案 1 :(得分:3)

无论

namespace t
{
    A a;
}

t::A a;

在第一种情况下,a位于命名空间t内(实际上它的全名是::t::a)。 在第二种情况下,a是全球性的。

(注意:class A{}之后;遗失了}

答案 2 :(得分:2)

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

现在使用t::at::another_a

如果你想制作另一个对象:

t::A another_a_out_of_namespace_scope;

答案 3 :(得分:0)

在声明类之后使用分号,并使用:

t::A my_object;

muntoo的答案允许您创建该类的单个实例,并且也是正确的。

答案 4 :(得分:0)

对于名为x;

的对象
t::A x;