- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我习惯使用引用作为内部变量的简写,否则访问起来会更麻烦,例如:
class Vec3
{
double v[3];
public:
// .x, .y and .z element access operators for convenience.
double& x;
double& y;
double& z;
Vec3() : x(v[0]), y(v[1]), z(v[2])
{
}
}
这样,我可以这样做:
main
{
Vec3 v;
v.x = 1;
v.y = 2;
v.z = 3;
}
到目前为止一切正常。现在,碰巧这个 Vec3 类嵌套在另一个类中。我想像这样从更高级别直接访问 Vec3.v[0]:
struct Node
{
double &x;
Vec3 v;
Node() : v(Vec3()), x(v.x) {}
};
这样 Node.x 实际上就是 Node.v.v[0] 并且我可以这样做:
main
{
Node n;
n.v.x = 1;
n.x = 2;
std::cout << n.v.x << " " << n.x;
}
但不幸的是没有。我应该看到的输出是
2 2
但我真正看到的是
1 2
如您所见,我试图将引用 x 指向Node构造函数的初始化列表指向Vec3的引用v.x,我什至在之前显式初始化并调用了Vec3的构造函数。不过,n.x 似乎在引用其他内容。也许这样就可以了
Node() : x(v.v[0]) {}
但 v.v 是私有(private)的,我真的希望它保持这种状态。
如何在不公开 v.v 的情况下按照我的预期进行这项工作?
最佳答案
问题出在 Node
结构上。类初始化顺序不依赖于构造函数中指定的初始化顺序,而是依赖于变量声明的顺序。
你基本上是用一些奇怪的、单元化的东西初始化 double&
,这是未定义的行为。
将声明的顺序更改为
struct Node
{
Vec3 v;
double &x;
Node() : v(Vec3()), x(v.x) {}
};
你会没事的。
关于c++引用作为私有(private)变量的简写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38553290/
考虑以下示例: if (cache) { x = cache; } else { x = cache = someMethod(); } 无论如何要使它比 cache 更短? x =
我有一个字符串,我想将它附加到其他字符串。比方说: $my_string = 'Hello'; $my_string .= ' there'; 这将返回“你好”。 我想像这样设置条件: $my_str
有没有办法执行以下操作,但简而言之 if/then 语法: if($method->isAbstract()) { $details['abstract'] = true; } 如果我这样做:
我很好奇,有没有更简单的说法 if(myVar == myVal || myVar == myOtherVal){ /*...*/ } 如: if(myVar == myVal || myOtherV
我正在寻找一种方法来最小化数组的创建,其中所有索引都具有相同的值。这可能不可能,但我会发现它非常方便。 考虑: var layer = []; layer['game'] = new Kinetic.
我想知道是否有办法将简写 if/else 与简写 += 合并 类似这样的事情: var value; $.each(data.events, function(index, element) {
我需要用 JQuery 做一个速记 IF-ELSE。我的代码: $('#somediv').val() != 0 ? $('#somediv').toggleClass('class1') :
我觉得这一定是重复的,但我找不到任何东西,可能是由于措辞不同,或者只是因为确实没有更好的东西。 我正在生成大量的 JS 代码,其中“OR”对象属性与变量,而标识符不一定匹配。看起来像这样(值为 boo
这个问题在这里已经有了答案: Shorthand if/else statement Javascript (7 个答案) 关闭 9 年前。 下面的简写等价物是什么? if (windowwidth
以下的 JS 简写是什么: if (typeof bfMax !== 'undefined') { options.max = bfMax; } 最佳答案 有条件地赋值
假设我有父类 - “Parent”,我想从中创建三个对象 - o1、o2、o3。 因此,如果有一个简略的方法或一种漂亮的方法来执行以下操作: o1=Parent() o2=Parent() o3=Pa
这个问题已经有答案了: Check variable equality against a list of values (16 个回答) 已关闭 5 年前。 我觉得我经常遇到这种情况,直觉上应该有一
我是 Swift 的新手,我想知道是否有一种“速记”形式,可以在不执行 if nil 检查的情况下将可选值分配给非可选值。 例如,如果我有一个可选的闭包: var onTap: (() -> Void
这个问题在这里已经有了答案: Why does the expression 0 < 0 == 0 return False in Python? (9 个回答) 关闭 4 年前。 if x ==
这个问题在这里已经有了答案: CSS select multiple descendants of another element (3 个答案) 关闭 5 年前。
假设我正在使用一些 python 包中的类,如下所示 class foo(object): def __init__(self): self.a = None
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
top right bottom left 或 width 有任何简写和高度 ? 我有很多这样的CSS #topDiv { position:absolute; top:0px;
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: Ternary conditional operator in Python 我想在 python 中做以下事情:
if-else 的 JavaScript 简写可以从函数中返回吗?如果是这样,这将如何运作。 例如。我有这个: if(boolean){ return; } 我想这样写: (value)? retu
我是一名优秀的程序员,十分优秀!