Полагаю, это может быть концептуальной проблемой, но я не смог найти ничего, что могло бы ее решить.Я новичок в C ++, и у меня проблемы с включениями (я работаю в Visual Studio 2017 на Windows 10 ).Я создал эти классы:
Каждый из них со своими файлами .h и .cpp соответственно..H каждого из них выглядит следующим образом:
Shader.h
#pragma once
class Shader
{
public:
//Default constructor
private:
//Some stuff
}
Material.h
#pragma once
#include "Shader.h"
class Material
{
public:
Material(Shader s);
private:
//Some stuff
}
Mesh.h
#pragma once
#include "Material.h"
class Mesh
{
public:
Mesh(Material m);
private:
//Some stuff
}
Проблема возникает в Mesh.cpp, когда я пишу это:
Mesh.cpp
#include "stdafx.h"
#include "Mesh.h"
Mesh::Mesh(Material mat)
{
}
Если я напишу это, Visual Studio выдаст мне эту ошибку (пометив красной скобкой первую скобку конструктора):
Не существует конструктора по умолчанию для класса «Материал»
Почему предполагается, что я определяю конструктор класса Material только путем включения Material.h в заголовок класса Mesh?Другая проблема возникает, если я просто удаляю конструктор и пытаюсь создать объект типа Mesh, например, в Main.cpp.Если я сделаю это (разрешив Mesh с конструктором по умолчанию):
Mesh m = Mesh();
Компилятор скажет:
На конструктор по умолчанию Mesh :: Mesh нельзя ссылаться - это -удаленная функция
Я не знаю, что делать или что искать.Надеюсь, я дал вам необходимую информацию, чтобы помочь мне, спасибо заранее!