代码如下:
- C/C++ code
-
// Es1.7.cpp : 定义控制台应用程序的入口点。 // //用指针来操作六个VECTOR的数列 #include "stdafx.h" #include <iostream> #include<vector> using namespace std; //遍历VECTOR,传递过来的是指向VECTOR的指针 void visit_vector( const vector<int> *&vector_pointer ){ for( int index = 0; index < (*vector_pointer).size(); index ++ ){ cout<<( *vector_pointer )[ index ]<<'/t'; } cout<<endl; } int _tmain(int argc, _TCHAR* argv[]) { const int seq_size = 8; int fib[ seq_size ] = { 1, 1, 2, 3, 5, 8, 13, 21 }; int luc[ seq_size ] = { 1, 3, 4, 7, 11, 18, 29, 47 }; int pel[ seq_size ] = { 1, 2, 5, 12, 29, 70, 169, 408 }; int tri[ seq_size ] = { 1, 3, 6, 10, 15, 21, 28, 36 }; int squ[ seq_size ] = { 1, 4, 9, 16, 25, 36, 49, 64 }; int pen[ seq_size ] = { 1, 5, 12, 22, 35, 51, 70, 92 }; vector<int> fibonacci( fib, fib + seq_size ), lucas( luc, luc + seq_size ), pell( pel, pel + seq_size ), triangular( tri, tri + seq_size ), square( squ, squ + seq_size ), pentagonal( pen, pen + seq_size ); const int seq_cnt = 6; vector<int> *seq_addres[ seq_cnt ] = { &fibonacci, &lucas, &pell, &triangular, &square, &pentagonal }; for( int index = 0; index < seq_cnt; index ++ ){ visit_vector( seq_addres[ index ] ); } return 0; }
报错如下:
1>------ 已启动生成: 项目: Es1.7, 配置: Debug Win32 ------
1>正在编译...
1>Es1.7.cpp
1>d:/windc++_source_primer+essential/es1.7/es1.7/es1.7.cpp(12) : warning C4018: “ <”: 有符号/无符号不匹配
1>d:/windc++_source_primer+essential/es1.7/es1.7/es1.7.cpp(48) : error C2664: “visit_vector”: 不能将参数 1 从“std::vector <_Ty> *”转换为“const std::vector <_Ty> *&”
1> with
1> [
1> _Ty=int
1> ]
1> 转换丢失限定符
1>生成日志保存在“file://d:/windC++_source_primer+Essential/Es1.7/Es1.7/Debug/BuildLog.htm”
1>Es1.7 - 1 个错误,1 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
最后发现原因是这样子的:
不是说如果形参是CONST的实参可以是非CONST的吗?
上面这句话是针对非引用形参来说的。当形参是引用类型的
话,实参必须完全匹配形参类型。
e.g.