C ++ Cast增量转换

时间:2014-03-24 15:56:06

标签: c++ casting

someobject* scratchpad[10000][33];

我想在一个声明中这样做:

unsigned int index = (int) scratchpad[j][0];    
scratchpad[j][0] = (someobject*) (index + 1);

我以为是:

unsigned int index = (unsigned int) ++((char*)scratchpad)[j][0];

但我无法正确理解语法。我实际上是在第一个(0)子数组索引中存储一个整数。

3 个答案:

答案 0 :(得分:2)

不要在第一个子数组索引中存储整数。存放在别处。认真。不要这样做。

但如果你是一个绝对的狂热者,唯一的目标就是让人们讨厌你,那么假设unsigned int并不比指针大,那么这就有效。

unsigned index = ++reinterpret_cast<unsigned&>(scratchpad[j][0]);

http://coliru.stacked-crooked.com/a/99043130e74913f9

答案 1 :(得分:0)

我觉得你并没有告诉我们你的问题是什么。所以我只能猜测这是你真正需要的:

++scratchpad[j][0];

假设scratchpad只是一个指针数组,你只想增加其中一个。如果是这种情况,你根本不需要演员,所以完成工作并且所有丑陋的代码都消失了。否则,你需要用语言澄清。

答案 2 :(得分:-2)

我写这个作为答案,而不是评论,所以(希望)大量的支持者会说服你我是对的。

 unsigned int index = (unsigned int) ++((char*)scratchpad)[j][0];

即使这样做(它不应该......)这不是你应该拥有的,它是神秘的,难以阅读。

2行很好,虽然我不确定你是不是......什么是某个对象和一个无符号的int ...我会在评论中问这个。