#include
struct B {
char i;
B(char i) : i(i) {};
void bar() {};
};
struct D : B {
int y;
D(char i, int y) : B(i), y(y) {};
};
void foo(B *arr, size_t size)
{
for(B *end = arr + size; arr < end; ++arr) {
std::cout i Welcher Offset wird gemäß dem Standard verwendet, wenn über ein Array abgeleiteter Elemente über einen Zeiger auf eine Basis in einem polymorphen Kontext iteriert wird?
[/list]
I Ich habe den Standard durchgesehen und keine Erwähnung von Laufzeitinformationen gefunden, die sich auf die auswirken Offsets.
[expr.add] klärt die Sache nicht wirklich. Technisch gesehen heißt es, dass der resultierende Zeiger auf das Element eines Arrays zeigen soll.
Es wird für mich wirklich seltsam, wenn ich den foo print:
[code]#include
struct B {
char i;
B(char i) : i(i) {};
virtual void foo() { std::cout
struct D : B { int y; D(char i, int y) : B(i), y(y) {}; };
void foo(B *arr, size_t size) { for(B *end = arr + size; arr < end; ++arr) { std::cout i Welcher Offset wird gemäß dem Standard verwendet, wenn über ein Array abgeleiteter Elemente über einen Zeiger auf eine Basis in einem polymorphen Kontext iteriert wird? [/list] I Ich habe den Standard durchgesehen und keine Erwähnung von Laufzeitinformationen gefunden, die sich auf die auswirken Offsets. [expr.add] klärt die Sache nicht wirklich. Technisch gesehen heißt es, dass der resultierende Zeiger auf das Element eines Arrays zeigen soll. Es wird für mich wirklich seltsam, wenn ich den foo print: [code]#include
//$pieces is an stdClass object which has 4 elements the foreach loops through
$arr = array();
foreach($pieces as $piece)
{
$piece->value = 1;
array_push($arr, $piece);...