2016-04-08 4 views
-1

Wie würde ich auf meinen Vektor in aDie.h von aHisto.h, vorzugsweise nicht als Funktion erklärt? Sobald mein Vektor in meiner Histo.h ist, möchte ich in der Lage sein, ihn zu verändern, die Größe zu ändern und ihn einfach zu manipulieren, wie auch immer ich es auswählen möchte. Ich habe nur Probleme mit Fehlermeldungen in VS.C++ Zugriff auf meinen Vektor in einem anderen Headerfile und cpp

aDie.h

#define aDie_H 
    #pragma once 
    #include <vector> 
    #include <iostream> 
    class aDie { 
    public: 
     aDie(); 
     void numRolls(); 
     void getSeed(); 
     void roll(); 
     void myVector(); //just gives my vector values 
     void Print(); 
     std::vector<int> myV; //declare my vector, it has values stored from void myVector(); 

    private: 
     int i = 0; 
     int Rolls; 
     int dSeed; 
     int die1; 
     int die2; 
     int sum; 

    }; 

aHisto.h

#define aHistogram_H 
#include "aDie.h" 

class aHistogram : public aDie{ 
public: 
//adds a pointer to my vector so I can access and modify it anywhere on this header 
    aHistogram(); //default const 
    void getVector(); //does stuff with vector 

private: 
    int i = 0; 
    int min; 
    int max; 
}; 

aHisto.cpp

#include "aHistogram.h" 
#include "aDie.h" 
#include <iostream> 
#include <vector> 
using namespace std; 

aHistogram::aHistogram() { //default constructor 
    min = 0; 
    max = 0; 

} 
void aHistogram::getVector() { 

//does stuff with vector here 

    } 
+0

Sie können mit 'aDie :: myV' darauf zugreifen, was ist das Problem eigentlich? Was hast du versucht? Warum funktioniert es nicht für dich? –

+0

Jede erbende Klasse erhält eine eigene Kopie der Variablen der Elternklasse, also sollte man mit 'this-> myV' oder auch nur' myV' darauf zugreifen können. – callyalater

+0

@callyalater das funktioniert und lässt mich tatsächlich debuggen, aber wenn ich 'cout << myV.at (3);' Ich bekomme eine Null, obwohl diese Nummer nicht 0 ist – user6124417

Antwort

0

Verwenden der Gültigkeitsbereichsoperator weil aHistogram erbt von aDie.

oder Sie könnten this wegen der Vererbung Zugriffsebene verwenden.

void aHistogram::getVector() { 
     aDie::myV->something(); 
     //Or use this pointer 
     this->myV->something(); 
} 
Verwandte Themen