缺少 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;
}
所以我目前正在做一个项目,用 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;
}