缺少 class 模板 `sql::Bag` 的参数列表

Argument list for class template `sgl::Bag` is missing

所以我目前正在做一个项目,用 C++ 制作一个包含所有不同数据结构的库。这里我声明了一个 class Bag:

template<typename Type>
class Bag
{
    // ...
    inline static const char* print_seperator = "\n";

public:

    // ...
    inline static void set_seperator(const char* new_seperator)
    {
        Bag::print_seperator = new_seperator;
    }
}

现在这工作正常,但是当我尝试在我的 main() 函数中使用它时,如下所示:

sgl::Bag::set_seperator(", ");

这显示了以下错误:

Argument list for class template sgl::Bag is missing

..所以我给出了 class 模板的参数列表:

sgl::Bag<int>::set_seperator(", ");

..它工作正常。

但我不想每次都打出来。有什么办法可以克服这个问题吗?

您可以使用默认模板参数作为模板类型参数Type,如下所示:

//use default argument for template type parameter "Type"
template<typename Type = int>
class Bag
{
    // ...
    inline static const char* print_seperator = "\n";

public:

    // ...
    inline static void set_seperator(const char* new_seperator)
    {
        Bag::print_seperator = new_seperator;
    }
};
int main()
{
    //no need to specify int
    Bag<>::set_seperator(", "); //angle bracket still needed  
    return 0;
}

Demo