I'm wondering whether it is better to make object fields within a class objects or pointers. Specifically it seems that using an object field requires the entire header for that object's class to be included, where as with an object pointer you can get by with a simpler forward class declaration.
For example, which is better, an object field:
Classifier.h
#include "normalizer.h"
class Classifier {
public:
Classifier(const Normalizer& normalizer);
private:
const Normalizer normalizer_;
};
Classifier.cpp
#include "classifier.h"
#include "normalizer.h"
Classifier::Classifier(const Normalizer& normalizer)
: normalizer_(normalizer) {}
Or an object pointer field:
Classifier.h
class Normalizer;
class Classifier {
public:
Classifier(const Normalizer& normalizer);
private:
const Normalizer* normalizer_;
};
Classifier.cpp
#include "normalizer.h"
Classifier::Classifier(const Normalizer& normalizer)
: normalizer_(new Normalizer(normalizer)) {}
Classifier::~Classifier() {
delete normalizer_;
}