计算器.h
class Calculator {
Calculator();
template<typename... Args>
static auto add(Args... args);
};
Run Code Online (Sandbox Code Playgroud)
计算器.cpp
#include "Calculator.h"
Calculator::Calculator() {}
template<typename... Args>
auto Calculator::add(Args... args) {
return (args + ... + 0);
}
Run Code Online (Sandbox Code Playgroud)
主程序
#include <iostream>
#include "Calculator.h"
int main(){
Calculator cal;
std::cout<< cal.add(1,2,3);
}
Run Code Online (Sandbox Code Playgroud)
具有推导返回类型的函数“add<int, int, int>”在定义之前不能使用
如果我将该add()方法移至头文件中,则不会出现错误。我缺少什么?
我缺少什么?
错误消息解释了这一点:您试图在定义函数之前使用推导的返回类型。这是不允许的1。Calculator::add为了澄清起见,您在 中调用该函数main,但该函数Calculator::add在函数调用之前未在同一翻译单元中定义。事实上,它根本不是在同一个翻译单元中定义的。
您需要:
1这是不允许的,因为返回类型是根据函数定义中的 return 语句推导出来的。如果没有函数定义,那么编译器就无法确定返回类型。
| 归档时间: |
|
| 查看次数: |
7202 次 |
| 最近记录: |