Объекты (которые не являются динамическими) представляют собой блоки данных в памяти.C++ Цикл по адресам объекта
Есть ли способ циклического перехода и печати каждого элемента в объекте?
Я пробовал делать это с помощью «этого», но я все время получаю ошибки.
#include "stdafx.h"
#include <iostream>
#include "TestProject.h"
using namespace std;
class myclass {
int someint = 10;
double somedouble = 80000;
int somearray[5] = {0, 1, 2, 3, 4};
public:
void somefunction();
};
void myclass::somefunction() {
cout << "\n test \n" << this;
myclass *somepointer;
somepointer = this;
somepointer += 1;
cout << "\n test2 \n" << *somepointer;
//Error: no opperator '<<' matches these operands
}
int main() {
myclass myobject;
myobject.somefunction();
return 0;
}
Я предполагаю, что ошибка связана с тем, что типы не совпадают. Но я не могу понять решение. Есть ли динамический тип, или мне нужно каким-то образом проверить тип?
Если ваш класс не сделан целиком из указателей, маловероятно, что повторение через память на 1 приведет вас к следующему объекту. – mjr
Также ... причина, по которой вы получаете «Ошибка: никакой операнд << << соответствует этим операндам», потому что у вас нет оператора <<, определенного для myclass. Я собираюсь предположить, что это ошибка времени компиляции? Если вы сделаете это для компиляции, вы будете испытывать недостаток или хуже, когда вы разыгрываете какой-то показатель. – mjr
На самом деле указатели больше, чем 'char', поэтому он даже не работал бы с указателями. У вас должны быть только такие, как 'char' – jaggedSpire