C++ 类中的静态常量成员

2024-01-16

如何在 C++ 中声明静态常量值? 我希望能够获得常量 Vector3::Xaxis,但我不应该能够更改它。

我在另一个类中看到了以下代码:

const MyClass MyClass::Constant(1.0);

我尝试在课堂上实现这一点:

static const Vector3 Xaxis(1.0, 0.0, 0.0);

但是我收到错误

math3d.cpp:15: error: expected identifier before numeric constant
math3d.cpp:15: error: expected ‘,’ or ‘...’ before numeric constant

然后我尝试了一些与我在 C# 中所做的更相似的事情:

static Vector3 Xaxis = Vector3(1, 0, 0);

但是我收到其他错误:

math3d.cpp:15: error: invalid use of incomplete type ‘class Vector3’
math3d.cpp:9: error: forward declaration of ‘class Vector3’
math3d.cpp:15: error: invalid in-class initialization of static data member of non-integral type ‘const Vector3’

到目前为止,我课堂上的重要部分如下所示

class Vector3
{
public:
    double X;
    double Y;
    double Z;

    static Vector3 Xaxis = Vector3(1, 0, 0);

    Vector3(double x, double y, double z)
    {
        X = x; Y = y; Z = z;
    }
};

我如何实现我在这里想做的事情?有一个 Vector3::Xaxis 返回 Vector3(1.0, 0.0, 0.0);


class Vector3
{
public:
    double X;
    double Y;
    double Z;

    static Vector3 const Xaxis;

    Vector3(double x, double y, double z)
    {
        X = x; Y = y; Z = z;
    }
};

Vector3 const Vector3::Xaxis(1, 0, 0);

请注意,最后一行是定义并应放入实施文件中 (例如 [.cpp] 或 [.cc])。

如果您需要将其用于仅标头模块,那么有一个基于模板的技巧 为您做这件事——但如果您需要的话,最好单独询问。

干杯,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 类中的静态常量成员 的相关文章

随机推荐

  • 将元素添加到 rxjsBehaviorSubject 或 Angular2+ 中数组的主题

    我正在阅读本教程的 不相关组件 与服务共享数据 部分 了解如何在 Angular 中的不相关组件之间共享数据here https angularfirebase com lessons sharing data between angula
  • 删除 Chrome 中音频播放器的最大宽度

    我希望默认的 HTML5 音频播放器适合其父容器的宽度 我将其显示设置为 块 宽度设置为 100 然而 Chrome 似乎在超过一定的窗口大小后开始在左侧和右侧添加填充 Firefox 的行为符合我的预期 播放器的边缘恰好到达父 div 的
  • 如何编写多行字符串文字

    有没有办法在 C 中使用 Perl 那样的多行纯文本 常量文字 也许有一些解析技巧 include正在读取一个文件 我知道你可以用 C 11 中的原始字符串来做到这一点 嗯 有点 最简单的方法是仅使用相邻字符串文字由编译器连接的事实 con
  • 关于 Team Foundation 中的功能和积压项目,Epics 是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 From 这个链接 https stackoverflow com questions 16698363 difference betwe
  • 收到远程通知后重新加载/刷新场景 swiftUI

    我有这个问题 我在 AppDelegate 中使用 application didReceiveRemoteNotification 收到来自 CloudKit 的通知 我能够接收 recordId 获取它并成功保存它 问题是 场景没有刷新
  • 比较两个 NumPy 数组是否相等(按元素)

    比较两个 NumPy 数组是否相等的最简单方法是什么 其中相等定义为 A B iff 对于所有索引 i A i B i 只需使用 给我一个布尔数组 gt gt gt numpy array 1 1 1 numpy array 1 1 1 a
  • 在 Javascript 中将 ISO/Windows 字符集转换为 UTF-8

    我正在开发一个火狐插件 我获取网页来为用户做一些分析 问题是当我尝试获取不是 utf 8 编码的 XMLHttpRequest 页面时 我看到的字符串是混乱的 例如 带有 windows 1125 的希伯来语页面或带有 gb2312 的中文
  • 在 JavaScript 中分配内存

    我们在深入研究 JavaScript 时遇到了麻烦 请帮助我们 提前致谢 下面的代码 为什么 samurai 仍然无法调用函数 yell gt var ninja yell function yell n return n gt 0 yel
  • 如何在我的数据库中实现 Twitter 转发操作

    我正在实现类似于 Twitter 的网络应用程序 我需要实施 转发 操作 并且一条推文可以被一个人转发多次 我有一个基本的 推文 表 其中包含以下列 Tweets tweet id 推文文本 tweet date created 推文用户
  • 为什么 SQL Server 2000 将 SELECT test.* 和 SELECT t.est.* 视为相同?

    我在 SQL Server 2000 中做了一个查询 并在表名中间添加了一个句点 SELECT t est FROM test 代替 SELECT test FROM test 并且查询仍然完美执行 Even SELECT t e st F
  • 域特定的 htpasswd 条件

    我正在使用通配符 dns 系统 该系统通过单个 Web 应用程序路由所有子域 并根据 URL 的第一部分 X domain com 其中 X 是用户名 设置用户 ID 我现在想要编辑 htaccess 文件 以针对特定域使用 htpassw
  • 如何按周对日期字段进行分组(每周从周六开始)?

    我知道当我看到这个问题的答案时我会 呃 但尽管如此 如何按周对日期字段进行分组 每周从周六开始 你需要先使用日期优先 http msdn microsoft com en us library ms181598 aspx to set Sa
  • 从 url 下载 csv 并将其设为数据框 python pandas

    我是 python 新手 所以在这里需要一些帮助 我有一个带有 url 列的数据框 其中包含一个链接 允许我为每个链接下载 CSV 我的目标是创建一个循环 任何有效的方法 以便我可以运行一个命令来下载 读取 csv 并为每一行创建一个数据框
  • 将外部数据插入到 persistence.xml 中

    我希望我的 persistence xml 动态设置它的一些属性 具体来说
  • 如何使用循环创建多列

    我正在努力以干燥的方式创建多个列 我已经搜索了谷歌和堆栈交换 但我仍然在努力解决以下问题 df lt data frame red 1 10 blue seq 1 30 3 myfunction lt function x log x 10
  • 非 NP 完全的 NP 困难问题更难?

    根据我的理解 所有 NP 完全问题都是 NP 困难问题 但已知某些 NP 困难问题不是 NP 完全问题 并且 NP 困难问题至少与 NP 完全问题一样困难 这是否意味着非 NP 完全的 NP 困难问题更难 以及如何更难 要回答这个问题 首先
  • JSch SFTP 安全性与 session.setConfig("StrictHostKeyChecking", "no");

    我使用 JSch 和 FTP 文件的私钥 jsch addIdentity privatekeyfile Session session jsch getSession user example com 22 session setConf
  • egit 锁失败 eclipse

    所以在工作中 我们都共享相同的存储 我们推拉我们的分支和所有好的 git 东西 所以我通常在 Eclipse 中从 egit 进行拉动和推压 我不是这里唯一一个大多数人这样做的人 但我的一些分支已经开始给我 锁定失败 无法锁定本地跟踪引用以
  • 如何在 python 中发现特定包中的类?

    我有一个插件样式模块包 它看起来像这样 Plugins Plugins init py Plugins Plugin1 py Plugins Plugin2 py etc 每个 py 文件都包含一个派生自的类PluginBaseClass
  • C++ 类中的静态常量成员

    如何在 C 中声明静态常量值 我希望能够获得常量 Vector3 Xaxis 但我不应该能够更改它 我在另一个类中看到了以下代码 const MyClass MyClass Constant 1 0 我尝试在课堂上实现这一点 static