Approccio al C++ da qualche gg, provengo da VB6/VBA e confesso parecchie difficoltà... sto pertanto "giocando" e studiando.
Utilizzo Dev C++, come compiler.
Cerco di comprendere meglio gli aspetti dei Pointer, vi espongo un test ovviamente banale ma di concetto, su cui cercavo di capire le differenze.
Creata una classe base, nel main creo 1 istanza semplice di classe e un Array con 2 istanze, e le passo a 2 funzioni che prevedono il parametro come puntatore.
Quello che fatico a comprendere è la differenza tra le 2 chiamate alle Funzioni Test1 e Test2.
Perchè passando il singolo oggetto devo mettere il simbolo di DeReferenza [&] mentre se passo l'array di oggetti no, nonostante in entrambe le funzioni l'argomento sia indicato come [NomeClasse *p]...?
#include <iostream>
#include "Class1.h"
using namespace std;
void test1(Test *p);
void test2(Test *p,int count );
Test mfc;
Test rfc[2]={(5),(12)};
int main()
{
mfc.setindex(2);
test1(&mfc);
test2(rfc,sizeof(rfc)/sizeof(*rfc));
return 0;
}
void test1(Test *p) { cout<< p->getindex()<<"\n";}
void test2(Test *p,int count )
{
int i;
for (int i = 0; i < count; i++)
{
cout<< p[i].getindex()<<"\n";
}
}
La classe: [File Class1.h]
class Test
{
// Private section
public:
Test(); // Constructor
Test(int index);
int getindex() {return _index;};
void setindex(int index);
private:
int _index;
};
File Class1.cpp
Test::Test() {;}
Test::Test(int index) {_index=index;}
void Test::setindex(int index)
{
_index=index;
}