Leider kann ich nicht viel zu deinem eigentlichen Problem sagen, da fehlen einfach die nötigen Informationen. Ich glaube der Fehler würde sich am einfachsten finden lassen wenn du ein komplettes Beispiel bzw. deinen kompletten Quellcode zeigst.
Zur deiner Titelfrage:
Man kann einen Vector aus einer Klasse als Kopie, als Zeiger/Referenz (Konstant oder nicht) oder per Movesemantik beziehen.
Meiner Meinung nach würde ich, soweit es sich wirklich nicht Designtechnisch vermeiden lässt, nur die Kopie oder Movesemantik benutzen. Der Bezug der Referenz oder des Zeigers legt die eigentlich Datenstruktur deiner Klasse offen. solltest du einmal die Interne Struktur ändern wollen würde sich dies auch nach außen auswirken, etwas was man besser vermeiden sollte.
Sollte es sich absolut nicht vermeiden lassen so würde ich den Vektor (oder allgemein: alle grundlegenden Daten) wie schon gezeigt nur als konstante Referenz offenbaren. Sollten von außen Änderungen an einer Internen Struktur vorgenommen werden müssen liegt so gut wie immer ein Designfehler zugrunde.
Eventuell hilft dir ja sogar die suche nach einem Design bei dem du die Vektoren nicht offenlegen musst bei der Fehlerfindung. Ansonsten zeig einfach mal wie gesagt ein komplettes Codebeispiel.
C++11 und die Sache mit der Move-Semantik (Netter Blog wie ich finde.)