你如何在C ++中声明一个对象?

时间:2014-07-05 20:53:26

标签: c++ object forward-declaration

超级简单:如何在C ++中声明(非指针)对象?

我试过了:

Object obj;

但是C ++编译器认为这是对对象的默认构造函数的调用。甚至可以在C ++中转发声明对象吗?

编辑:我认为没有人理解我的问题。为什么您可以声明int x;Object* objptr;,而不是Object obj;?我需要这个,因为main之外的struct必须识别Object(所以它需要在main之前声明,在struct之前),但是如果对象没有在main中初始化那么我正在使用的库将无法正常运行。

2 个答案:

答案 0 :(得分:1)

您无法实例化不完整类的对象(即仅向前声明的类)。但是,您可以定义指针和对它们的引用:

class Object;

Object *myObject;

class Object {
    int someMember;
};

默认情况下,C#和Java使用引用,这些引用并不适用于C ++。

答案 1 :(得分:0)

可以有任意数量的

extern Type var; // declaration

并且应该只是一个

Type var; // definition & declaration
在宣言之前,

Type必须在翻译单元中定义