I am working on some code to make a wallet to hold different currencies and this is my first time programming in c++ as a c programmer. Every time I make a new currency I want to add it to the list of valid Currencies that my wallet will be able to hold. To do this I make a currency class with a list that I want to add to every time a new currency is spawned. The error I get is   error: no matching function for call to ‘std::__cxx11::list<Currency>::push_back(Currency*) CurrencyList.push_back(this);"\
Currency.h looks like:
#ifndef CURRENCY_H
#define CURRENCY_H
#include <string>
#include <list>
class Currency {
    public:
        //Instances of class
        int id;
        float max;
        float left_over;
        std::string coinName;
  
        //Methods
        float buyFrom(float amount);
        float sellBack(float amount);
        //constructor
        Currency();
};
extern std::list<Currency> CurrencyList; //global list
#endif 
Currency.c looks like
#include "currency.h"
#include <iostream>
Currency::Currency() {
    Currency::id = 0;
    std::cout << "Input name :" << std::endl;
    std::cin >> Currency::coinName;
    std::cout << "Input max :" << std::endl;
    std::cin >> Currency::max;
    Currency::left_over = Currency::max - 0;
    CurrencyList.push_back(this);
}
float Currency::buyFrom(float amount) {
   Currency::left_over-=amount;
   std::cout << "Currency just lost :" << amount << "remaining is : " << Currency::left_over << std::endl;
}
float Currency::sellBack(float amount) {
    Currency::left_over -= amount;
    std::cout << "Currency just gained : " << amount << " remaining is : " << Currency::left_over << std::endl;;
}
The main is quiet simple it is only meant to spawn an object to test, that looks something like this. 
Main.cpp
#include <iostream>
#include "wallet.h"
#include "currency.h"
int main(){
    std::cout << "Hello World" << std::endl;
    Currency currencyTest;
    currencyTest.buyFrom(200.3);
}
 
     
    