我注意到C++不会编译以下内容:
class No_Good {
static double const d = 1.0;
};
Run Code Online (Sandbox Code Playgroud)
但是,它会愉快地允许将double更改为int,unsigned或任何整数类型的变体:
class Happy_Times {
static unsigned const u = 1;
};
Run Code Online (Sandbox Code Playgroud)
我的解决方案是将其改为:
class Now_Good {
static double d() { return 1.0; }
};
Run Code Online (Sandbox Code Playgroud)
并认为编译器将足够智能以在必要时内联...但它让我很好奇.
为什么C++设计器允许我使用静态const一个int或unsigned,而不是一个double?
编辑:我在Windows XP上使用visual studio 7.1(.net 2003).
EDIT2:
问题已得到解答,但为了完成,我看到的错误:
error C2864: 'd' : only const static integral data members can be initialized inside a class or struct
Run Code Online (Sandbox Code Playgroud) 在查看关于SO的另一个问题(在C++中使用NaN)后,我变得好奇std::numeric_limits<double>::signaling_NaN().
我无法获得signaling_NaN抛出异常.我想也许通过发信号它真的意味着一个信号,所以我尝试捕捉SIGFPE,但不...
这是我的代码:
double my_nan = numeric_limits<double>::signaling_NaN();
my_nan++;
my_nan += 5;
my_nan = my_nan / 10;
my_nan = 15 / my_nan;
cout << my_nan << endl;
Run Code Online (Sandbox Code Playgroud)
numeric_limits<double>::has_signaling_NaN 计算结果为true,因此它在我的系统上实现.
有任何想法吗?
我正在使用ms visual studio .net 2003的C++编译器.我回家时想在另一个地方测试它.
谢谢!
我在很多地方遇到过一些具有这种模式的代码:
this.someFunction.call(this, param);
Run Code Online (Sandbox Code Playgroud)
但在我看来,这只是一种更冗长的打字方式
this.someFunction(param)
Run Code Online (Sandbox Code Playgroud)
该模式有时出现在作为回调提供的函数内.碰巧使用Backbone,如果相关的话.像这样的东西:
Backbone.View.extend({
// other stuff ...
someFunction: function(param) {
// ...
},
anotherFunction: function() {
this.collection.on("some_event", function() {
this.someFunction.call(this, param);
});
}
});
Run Code Online (Sandbox Code Playgroud)
该模式是否实际上具有的效果不等于this.someFunction(param)或仅仅是因为关闭没有捕获正确的人而感到紧张this?
感谢您的任何见解!
我在实例化android.support.v7.app.MediaRouteButton对象时遇到了未处理的异常.我明白了:
NoClassDefFoundError: android.support.v7.mediarouter.R$attr
Run Code Online (Sandbox Code Playgroud)
这堂课在哪里?或者,如果它是自动生成的,我该如何让它自动生成?
我正在关注Chromecast的Android应用开发教程:https://developers.google.com/cast/cast_2nd-screen_app_tutorial
我在ubuntu 13.04上使用ADT捆绑的eclipse进行开发.
我将以下jar文件导入到工作区中的libs目录中,并通过项目属性的"Java Build Path"面板的"Libraries"选项卡中的"Add Jars ..."按钮将它们包含在我的Java Build Path中:
我有一个活动(由Eclipse创建的默认"hello world"),并且没有修改布局.我需要添加的唯一代码导致错误(粘贴在下面)显示如下:
import android.support.v7.app.MediaRouteButton;
...
MediaRouteButton mrb = new MediaRouteButton(this.getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
当我构建并运行应用程序时,我在LogCat中看到下面粘贴的错误消息(如果有人认为它相关,我可以发布更多信息).我注意到的关键事情是我似乎缺少android.support.v7.mediarouter.R $ attr(NoClassDefFoundError),并且它是从android.support.v7.app.MediaRouteButton的构造函数调用的.
08-12 00:36:02.837: E/AndroidRuntime(29600): java.lang.NoClassDefFoundError: android.support.v7.mediarouter.R$attr
08-12 00:36:02.837: E/AndroidRuntime(29600): at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:117)
08-12 00:36:02.837: E/AndroidRuntime(29600): at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:113)
08-12 00:36:02.837: E/AndroidRuntime(29600): at com.jeffbmartinez.helicast.MainActivity.onCreate(MainActivity.java:31)
...
Run Code Online (Sandbox Code Playgroud)
它正在运行MediaRouteButton的构造函数这一事实让我相信正确找到了jar文件,因此我认为我没有错误配置与依赖项(jar文件)相关的eclipse.但是,我的理解是这些'R'文件是自动生成的.如果这是正确的,我的android.support.v7.mediarouter.R文件在哪里?我没有在gen目录中看到它,其中放置了com.jeffbmartinez.helicast.R文件.
此外,我发现MediaRouteButton引用了一个我在上面列出的5个jar依赖项中找不到的包名称.android-support-v7-mediarouter.jar只包含android.support.v7.app.*和android.support.v7.media.*.
除了我的错误日志之外,我唯一找到对android.support.v7.mediarouter的引用的地方是https://developer.android.com/reference/android/support/v7/mediarouter/package-summary.html但是那里那里的信息很少.
我错过了依赖吗?如果是这样,我从哪里获得它或如何生成它?
谢谢!
简短版本是:如何学习c ++字段的单个字段的大小(以位为单位)?
澄清一下,我所谈论的领域的一个例子:
struct Test {
unsigned field1 : 4; // takes up 4 bits
unsigned field2 : 8; // 8 bits
unsigned field3 : 1; // 1 bit
unsigned field4 : 3; // 3 bits
unsigned field5 : 16; // 16 more to make it a 32 bit struct
int normal_member; // normal struct variable member, 4 bytes on my system
};
Test t;
t.field1 = 1;
t.field2 = 5;
// etc.
Run Code Online (Sandbox Code Playgroud)
我们只是说,要获得整个Test对象的大小很简单
sizeof(Test); // returns 8, for 8 …Run Code Online (Sandbox Code Playgroud) 我注意到,使用visual studio 2003,我可以"评论"我的评论,使它们不再是评论.这个需要一个例子:
如果我有:
/*
int commented_out = 0;
*/
Run Code Online (Sandbox Code Playgroud)
我可以注释掉/*和*/with //并且/*和*/中的代码不再被"注释掉"(文本更改为非注释颜色,编译器再次将其视为代码).像这样:
///*
int commented_out = 0;
//*/
Run Code Online (Sandbox Code Playgroud)
我发现这对于msvc 2003来说是正确的,这是正常的C++行为还是只是一个与这个编译器兼容的侥幸?
我从客户端 API 收到了下面的 JSON,但我正在努力获取嵌套的 JSON 内容。如果内部键是动态的,我该如何解析它?
const jsonStream = `
{
"items": {
"bvu62fu6dq": {
"name": "john",
"age": 23,
"xyz": "weu33s"
},
"iaxdw23fq": {
"name": "kelly",
"age": 21,
"xyz": "weu33s"
}
}
}`
Run Code Online (Sandbox Code Playgroud)
这是我在下面尝试的方法,通过循环地图从上面的 JSON 字符串中提取姓名和年龄的值;但它返回结果为 nil 的映射。 去游乐场
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
type Item struct {
Contact struct {
Info map[string]Person
} `json:"items"`
}
func main() {
dec := json.NewDecoder(strings.NewReader(jsonStream))
for {
var item Item
if err := dec.Decode(&item); err == io.EOF …Run Code Online (Sandbox Code Playgroud) c++ ×4
go ×2
adt ×1
android ×1
backbone.js ×1
comments ×1
decode ×1
field ×1
file ×1
google-cast ×1
javascript ×1
json ×1
nan ×1
parsing ×1
sizeof ×1
struct ×1
visual-c++ ×1