no default constructor exists for class x (inheritance) C++
c++
Solution
When you declare a non-default constructor for a class, the compiler does not generate a default one anymore. So you have to provide your own.
`PlayerStates` needs to call a default constructor of its base class `Player` in its own default constructor. So you either need to provide `Player` with a default constructor, or call it's non-default constructor from `PlayerStates`' default constructor initialization list.
This implicitly calls `Player::Player()`.
PlayerStates::PlayerStates() : textureAmount( 3 ) {}
This calls the single argument constructor:
PlayerStates::PlayerStates() : Player(someComPtr), textureAmount( 3 ) {}
Problem
I have the following three headers: IBaseStates.h ``` class IBaseStates { public: enum STATE; virtual void Update( STATE state ) = 0; }; ``` PlayerStates.h ``` #pragma once #include "IBaseStates.h" #include "Player.h" class PlayerStates : public IBaseStates, public Player { public: enum STATE { FLYING, FALLING }; int textureAmount; PlayerStates(); ~PlayerStates( ); void Update( STATE state ); }; ``` Player.h ``` #pragma once #include "StructVertex.h" #include "SquareVertices.h" #include "WICTextureLoader.h" using namespace Microsoft::WRL; using namespace DirectX; //using namespace DirectX; class Player : public SquareVertices { public: Player( ComPtr<ID3D11Device1> d3dDevice ); ~Player(); void Initialize(); void Update(); float x; float y; float z; float rotation; float velocity; ComPtr<ID3D11Buffer> vertexbuffer; ComPtr<ID3D11Buffer> indexbuffer; ComPtr<ID3D11ShaderResourceView> texture[3]; protected: const ComPtr<ID3D11Device1> d3dDevice; }; ``` Why when I define a constructor for my PlayerStates class in my PlayerStates.cpp file do I get ``` no default constructor exists for class Player ``` PlayerStates.cpp ``` #include "pch.h" #include "PlayerStates.h" PlayerStates::PlayerStates() : textureAmount( 3 ) { } ```