Возможно, вы захотите хранить указатели, а не копировать объекты, как вы это делаете сейчас.То, что ваш конструктор неявно пытается сделать, - это создать два пустых вектора Vector3 и затем скопировать содержимое аргументов (pos, direction) в те пустые векторы Vector3, которые являются переменными-членами Normal.
Эти члены встроеныобъекты, а не указатели.
Неявные вызовы пустого конструктора Vector3 () вызваны существованием этих встроенных объектов.
Более типично хранить указатели, поэтому вы можете объявить что-то вроде:
class Normal
{
public:
Vector3 *pos;
Vector3 *direction;
Normal(Vector3*, Vector3*);
};
но если вы настаиваете на встраивании объектов, я думаю, что есть синтаксис для вызова конструктора Vector3 из конструктора Normal.Это так:
Normal::Normal(Vector3 p, Vector3 dir) : pos(p), direction(dir) { }