【发布时间】:2014-07-05 20:53:26
【问题描述】:
超级简单:如何在 C++ 中声明(非指针)对象?
我试过了:
Object obj;
但 C++ 编译器认为这是对对象默认构造函数的调用。甚至可以在 C++ 中转发声明对象吗?
编辑:我认为没有人理解我的问题。为什么你可以声明int x; 和Object* objptr;,但不能声明Object obj;?我需要这个,因为 main 之外的结构必须识别对象(因此它需要在 main 之外,在结构之前 declared),但是如果对象没有在 main 内部初始化,那么我正在使用的库无法正常运行。
【问题讨论】:
-
嗯,是的,它必须被构造以便你可以使用它,除非它是一个基本类型。这不是 Java 或 C#。如果您 100% 确定需要可选对象,请使用
boost::optional。 -
extern Object obj;适用于任何类型。不要忘记在一个编译单元中正确定义,否则会出现未定义的引用错误。 -
@user3553031:当然可以。
-
@Deduplicator 如果没有实例化它就不是一个对象。
-
int x;不仅仅是一个声明。这是一个定义。
标签: c++ object forward-declaration