C++ - 构造函数和自引用类

标签 c++ constructor self-reference

在开始之前,我想对所有试图帮助我的人说声谢谢。那么现在,解决手头的问题。

我有一个 Vector 类,我需要一个名为 zero 的静态对象,它是一个 x = 0、y = 0 和 z = 0 的 Vector

这是我的代码(删除了一些不重要的位......)

class Vector
{
public:
    Vector(double x, double y, double z);

    double x, y, z;

    static Vector* zero(0.0, 0.0, 0.0);
}

我收到错误:“预期参数声明符” 我使用的编译器是 Clang/LLVMM...它是 Xcode 自带的...再次感谢您的帮助!

最佳答案

在类中,您将 Vector::zero 声明为 Vector*,然后使用 Vector 构造函数进行初始化。这将不起作用,因为构造函数不返回 Vector*。这可以通过在类声明之外动态分配 Vector::zero 来解决:

class Vector
{
    ...
};

Vector* Vector::zero = new Vector(0, 0, 0);

或者,更好的是——不用担心指针和动态内存分配:

class Vector
{
    public:
        ...
        static Vector zero;
        // ^^^ No pointers
};

Vector Vector::zero(0, 0, 0);

关于C++ - 构造函数和自引用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283532/

相关文章:

c++ - 关于删除表达式,C++ 中缺少 "placement delete"

c++ - 使用除特化之外的默认特征

java - 作业帮助 : List Constructors & Exceptions

c++ - (SFML)按下键时播放器构造函数未更新为正确的动画

c++ - 在执行过程中替换可执行文件时如何处理 "/proc/self/exe"的 readlink()?

c++ - ODR 的目的是什么?

c++ - 与 boost::python 斗争

Java:我正在尝试使用我创建的名为 Date 的类中的方法显示日期,但是当我尝试将其运行到另一个类中时,数字将不会显示

未定义 Python cx_Freeze 名称 __file__

java - 如何在Jsp中循环自引用类?