const vector *&vector_pointer报错

本文探讨了C++中使用指针操作多个数列VECTOR的示例代码,并详细解析了编译时出现的警告与错误原因,特别是关于const限定符在函数参数中的使用规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下: 

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.

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值