我有一个看起来像这样的类:
class ClassA
{
public:
float Get(int num) const;
protected:
float& Get(int num);
}
Run Code Online (Sandbox Code Playgroud)
在课外,我调用了Get()函数.
float foo = classAInstance.Get(i);
Run Code Online (Sandbox Code Playgroud)
我希望这可以调用公共版本,但是Visual Studio会出错:
error C2248: 'ClassA::Get' : cannot access protected member declared in class 'ClassA'
Run Code Online (Sandbox Code Playgroud)
在注释掉受保护的重载并删除对它的所有引用时,代码将编译.
为什么编译器在可访问的成员可用时尝试使用不可访问的成员?是否有一种可以接受的方法来强制编译器选择正确的重载?在某处有成员函数的解决规则吗?
我刚开始使用LISP,来自C的背景.到目前为止它很有趣,虽然有一个令人难以置信的学习曲线(我也是一个emacs新手).
无论如何,我对以下代码有一个愚蠢的问题来解析来自c源的include语句 - 如果有人可以对此发表评论并建议解决方案,那将会有很大帮助.
(defun include-start ( line )
(search "#include " line))
(defun get-include( line )
(let ((s (include-start line)))
(if (not (eq NIL s))
(subseq line s (length line)))))
(get-include "#include <stdio.h>")
Run Code Online (Sandbox Code Playgroud)
我希望最后一行能够返回
"<stdio.h>"
Run Code Online (Sandbox Code Playgroud)
但实际结果是
"#include <stdio.h>"
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我正在编写3D游戏,其中用户控制第一人称相机,并且移动被约束到球体的内表面.我设法限制了运动,但我无法弄清楚如何使用四元数来管理相机方向.理想情况下,相机向上矢量应该沿着球体的法线指向其中心,用户应该能够自由地环顾四周 - 好像我们总是在球体的底部,无论他在哪里移动.
我正在尝试使用自定义比较器创建优先级队列:
std::priority_queue<int, std::vector<int>, MyComparator> pq;
Run Code Online (Sandbox Code Playgroud)
我的问题是MyComparator有一个存储附加状态的方法.因为MyComparator被复制到优先级队列(据我所知),我无法在优先级队列所持有的MyComparator实例上调用此方法.有没有办法:
我正在使用 JOGL2 和 NativeWindow API 用 Java 编写应用程序。如何隐藏鼠标光标?
[编辑]
我没有使用 JFrame 来创建窗口,而是使用 JOGL 中的 GLWindow 来创建窗口。GLWindow 没有 setCursor 方法。这还有可能吗?
c++ ×2
3d ×1
cmake ×1
common-lisp ×1
java ×1
jogl ×1
lisp ×1
math ×1
mouse-cursor ×1
overloading ×1
quaternions ×1
stl ×1
string ×1