为什么我会'missing template arguments before f'
Why am I getting 'missing template arguments before f'
我有一个简单的代码,可以从std::vector<std::string>>
驱动,但它不起作用。我得到错误:
prog.cpp:在函数
‘int main()’
:
中prog.cpp:14:9:错误:‘f’
之前缺少模板参数Fun f {"a", "b", "c"};
^
prog.cpp:14:9:错误:‘f’
之前应为‘;’
这是代码。有人能告诉我我做错了什么吗?
#include <string> #include <vector> template< class String = std::string, class List = std::vector<String> > class Fun : public List { }; int main() { Fun f {"a", "b", "c"}; }
您必须使用
int main()
{
Fun<> f {"a", "b", "c"};
}
因为有趣是一个模板。
这就像你调用"function"而不是"function()"是因为没有参数。
您可以说"您正在实例化一个模板类,以便它返回一个类"。
即使您已经为模板参数指定了默认值,也需要包含一个空参数列表来实例化模板:
Fun<> f{"a", "b", "c"};
当然,为了实现这一点,Fun
仍然需要一个接受您传递的三个字符串的ctor。
最后(当然也是"当然"),标准容器类(包括vector<std::string>
)不打算用作基类,所以这通常不是一个好主意。
Fun仍然是一个模板,所以你必须这样写代码:
Fun<> f {"a", "b", "c"};
您还必须提供一个合适的构造函数。
相关文章:
- 具有变量Number of Arguments的std::函数的矢量
- Arduino无法编译名为SP:"Expected ')' before '(' token"的变量
- 为什么我的功能在使用 goto 时会给我带来"expected primary-expression before '}' token"?
- 如何修复"too few arguments to function"?
- 开放CV垫"Sizes of input arguments do not match"的问题
- 如何修复此错误"expected primary expression before 'int'"?
- 为什么在main()之前断言会导致语法错误"error: expected ')' before numeric constant"?
- 使用结构和数组时的"expected primary expression before '.' token"
- 有没有办法在初始化字符串时避免来自 clang-tidy(fuchsia-default-arguments)的警告?
- glGenVertexArrays and glGenBuffers arguments
- 如何解决"Expected expression before " = " token"?
- 'type_alias<char[N]>{}' VS 'char[N]{}' in function's arguments
- 错误:创建模板类时"expected unqualified-id before '{' token"
- AWS Lambda C++ 开发工具包"Process exited before completing request"
- Command Line Arguments wxCmdLineArgsArray in wxWidgets
- 为什么包含标头会导致"use of auto before deduction of auto"错误?
- OpenCV std::vector for cv::Mat arguments
- 为什么我总是"error: expected unqualified-id before 'case'"?
- map.insert:"Invalid arguments"错误与 pair<enum,vector<*>>
- 为什么我会'missing template arguments before f'