Search code examples
c++classsfml

Redefinition of default argument: parameter 2


Header file:

#pragma once

#include <string>
using namespace std;

class Paths
{
private:

public:
    Paths();

    string Image(string key, string extension = "png");
    string Font(string key, string extensino = "TTF");
};

CPP file:

#include "Paths.hpp"

Paths::Paths()
{

}

string Paths::Image(string key = "nullImage", string extension = "png")
{
    return "data/images/" + key + "." + extension;
}

string Paths::Font(string key = "NULLFONT", string extension = "TTF")
{
    return "data/fonts/" + key + "." + extension;
}

For my program, I want to facilitate the images, fonts (etc) paths. For my 2 string voids, visual studio says: "Redefinition of default argument: parameter 2". Can anyone explain what this means and how I can fix my code?


Solution

  • You defined the default parameters multiple times. Do the following:

    Header:

    #pragma once
    
    #include <string>
    using namespace std;
    
    class Paths
    {
    private:
    
    public:
        Paths();
    
        string Image(string key, string extension = "png");
        string Font(string key, string extensino = "TTF");
    };
    

    Cpp:

    #include "Paths.hpp"
    
    Paths::Paths()
    {
    
    }
    
    string Paths::Image(string key, string extension)
    {
        return "data/images/" + key + "." + extension;
    }
    
    string Paths::Font(string key, string extension)
    {
        return "data/fonts/" + key + "." + extension;
    }