c++ - < 标记之前的预期初始化程序 - 结构和模板
问题描述
我在练习我的一本编程书籍中的列表时遇到了这个确切的错误......我真的不知道;mb 我是盲人或某事。请帮忙。我尝试了各种其他组合,但下面的这个组合似乎对我必须做的事情最为明显。仍然没有类,所以我想知道它是否以某种方式连接到 using namespace std。
EDIT#1 忘记在哪一行添加:11、22
#include <iostream>
template <typename T>
void swap (T &a, T &b);
struct job{
char name[40];
double salary;
int floor;
};
template <> void Swap<job>(job &j1, job &j2);
void Show(job &j);
int main(){
using namespace std;
cout.precision(2);
cout.setf(ios::fixed, ios::floatfield);
int i = 10, j = 20;
cout << "i, j =" << i << ", " << j << ".\n";
cout << "Using generated by compiler function "
"changing int value:\n";
Swap(i,j);
cout << "Now i, j = " << i << ", " << j << ".\n";
job sue = {"Susan Yaffee", 73000.60, 7};
job sidney = {"Sidney Taffee", 78060.72, 9};
cout << "Before changing job structure:\n";
Show(sue);
Show(sidney);
Swap(sue, sidney);
cout << "After changing job structure:\n";
Show(sue);
Show(sidney);
cin.get();
return 0;
}
template <typename T>
void Swap(T &a, T &b){
using namespace std;
T temp;
temp = a;
a = b;
b = temp;
}
template <> void Swap<job>(job &j1, job &j2){
using namespace std;
double t1;
int t2;
t1 = j1.salary;
j1.salary = j2.salary;
j2.salary = t1;
t2 = j1.floor;
j1.floor = j2.floor;
j2.floor = t2;
}
void Show(job &j){
using namespace std;
cout << j.name << ": " << j.salary << "$ at floor " << j.floor << endl;
}
解决方案
#include <iostream>
template <typename T>
void swap (T &a, T &b);
很确定你的意思是Swap
这里。
没有它,后续的特化就无法编译。
和 是不同的swap
,Swap
因为 C++ 区分大小写。
从你的书中抄录时要小心。
推荐阅读
- sql - INSERT INTO SELECT 很慢,但是单独运行时 INSERT 或 SELECT 很快
- youtube - 流媒体可跳过广告中的 Youtube 无法启动并进入最终 CTA 屏幕
- netlogo - 以 .tiff 或 .jpg 格式导出 NetLogo 输出
- amazon-web-services - 列出 AWS SNS 主题中的待处理订阅
- ethereum - Solidity,在同一行用“=”分配多个值
- swift - 日历 ISO8601DateFormatter BC 年份范围
- python - 检查列表中是否存在单词以及是否存在字符串整数
- python - 将两个数据框合二为一并汇总总和
- html - HTML 标题属性优先级
- shell - 用于在 zsh 中的终端(macOS Catalina)中逐字移动光标的选项箭头键