000
06.02.2006, 10:50 Uhr
ref
|
manchmal funktionieren dinge bei irgend ein c++ code bei andere nicht , bei diesem einfache code es ist möglich std::cout<<somearay[2]; zu schreiben
C++: |
#include<iostream> int main() { int somearray[5]={ 4,5,2,7,4}; std::cout<<somearray[2]; return 0; }
|
aber im folgende code (in der zweite for schleife) es ist nicht möglich std::cout<< Family[i] allein OHNE .GetAge() zu schreiben , warum?
C++: |
// Listing 15.5 - Ein Array auf dem Heap
#include <iostream>
class CAT
{
public:
CAT() { itsAge = 1; itsWeight=5; } // Standardkonstruktor
~CAT(); // Destruktor
int GetAge() const { return itsAge; }
int GetWeight() const { return itsWeight; }
void SetAge(int age) { itsAge = age; }
private:
int itsAge;
int itsWeight;
};
CAT :: ~CAT()
{
// std::cout << "Destruktor aufgerufen!\n";
}
int main()
{
CAT * Family = new CAT[500];
int i;
CAT * pCat;
for (i = 0; i < 500; i++)
{
pCat = new CAT;
pCat->SetAge(2*i +1);
Family[i] = *pCat;
delete pCat;
} for (i = 0; i < 500; i++) std::cout << "Katze #" << i+1 << ": "
<< Family[i].GetAge() << std::endl; // Family[i] ohne .GetAge veursacht error
delete [] Family;
return 0;
}
|
-- Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein) |