鱼C论坛

 找回密码
 立即注册
查看: 3013|回复: 9

求助一个小问题,我实在不会了,谢谢了

[复制链接]
发表于 2017-12-20 21:30:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
但是删掉const就可以编译通过,为什么?

outputVector函数会报错,如下图

outputVector函数会报错,如下图
屏幕快照 2017-12-20 下午9.24.51.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-12-20 21:43:43 | 显示全部楼层
output函数编译问题,如果去掉const可以编译通过,加上就无法通过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-20 21:47:08 From FishC Mobile | 显示全部楼层
本帖最后由 sp1ral 于 2017-12-20 21:48 编辑

const在c++里一般是定义常量用的
你改成static
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-20 21:56:29 | 显示全部楼层
sp1ral 发表于 2017-12-20 21:47
const在c++里一般是定义常量用的
你改成static

但是我对array使用const是可行的,我只是想强调传入的向量是不可改变的,并不想它作为静态变量一直存在于内存中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-20 21:59:08 | 显示全部楼层
sp1ral 发表于 2017-12-20 21:47
const在c++里一般是定义常量用的
你改成static

很不幸的是。。。。。。。。改成static还是编译错误
Invalid storage class specifier in function declarator
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-20 22:19:59 | 显示全部楼层
新手回复这些问题真是力不从心呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-21 09:50:32 | 显示全部楼层
我查了一下书:
const int *p
int a = 1
p = &a 可以将a的值给指针p 但不能通过p改变a的值
const有顶层 const表示指针本身是个常量,底层const表示指针所指的对象是一个常量
int a = 0;
int *const p = &a; //不能改变p的值,这是一个顶层const
const int i = 0;
const int &b = i; //用于声明引用的const都是底层const
你这样定义试试 vector const 把const换到vector后面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-21 22:53:10 | 显示全部楼层
sp1ral 发表于 2017-12-21 09:50
我查了一下书:
const int *p
int a = 1

放在哪里都不可以,是xcode本身编译器的问题么,我这个代码是从书上找的,应该不会有错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-21 23:06:16 | 显示全部楼层
#include <iostream>
#include <vector>
#include <iomanip>
#include <stdexcept>
using namespace std;
void outputVector(const vector <int>  &);
void inputVector(vector<int> &);

int main(int argc, const char * argv[]) {
    // declare two vectors
    vector<int> integers1(7);//7-element vector<int>
    vector<int> integers2(10);//10-element vector<int>
   
    //print integers1 size and contents
    cout<<"Size of vector integers1 is"<<integers1.size()<<"\nvector after initialization:"<<endl;
    outputVector(integers1);
   
    //print integers2 size and contents
    cout<<"Size of vector integers2 is"<<integers2.size()<<"\nvector after initialization:"<<endl;
    outputVector(integers2);
   
    //input and print integers1 and integers2
    cout<<"\nEnter 17 integers:"<<endl;
    inputVector(integers1);
    inputVector(integers2);
    cout<<"After input, the vector contain:\n"<<"integers1:"<<endl;
    outputVector(integers1);
    cout<<"integers2:"<<endl;
    outputVector(integers2);
   
    //use inequality operator with vector objects
    cout<<"\nEvaluating:integers1!=integers2"<<endl;
    if(integers1!=integers2)
    cout<<"integers1 and integers2 are not equal"<<endl;
   
    //creat vector integers3 using integers1 as an initializer;print size and contents
    vector<int>integers3(integers1);
    cout<<"\nSize of vector integers3 is"<<integers3.size()<<"\nvector after initializationg:"<<endl;
    outputVector(integers3);
   
    //use overloaded assignment operatot
    cout<<"\nAssigning integers2 to integers1:"<<endl;
    integers1=integers2;
   
    cout<<"integers1:"<<endl;
    outputVector(integers1);
    cout<<"integers2:"<<endl;
    outputVector(integers2);
   
    //use equality operator with vector objects
    cout<<"\nEvaluating:integers1==integers2"<<endl;
    if(integers1==integers2)
    cout<<"integers1 and integers2 are equal"<<endl;
   
    //use square brackets to use the value at location 5 as an rvalue
    cout<<"\nintegers1[5] is"<<integers1[5];
   
    //use square brackets to creat lvalue
    cout<<"\n\nAssigning 1000 to integers1[5]"<<endl;
    integers1[5]=1000;
    cout<<"integers1:"<<endl;
    outputVector(integers1);
   
    //attempt to use out-of-range subscript
    try
    {
        cout<<"\nAttempt to display integers1.at(15)"<<endl;
        cout<<integers1.at(15)<<endl;
    }
    catch (out_of_range &ex)
    {
        cerr<<"An exception occurred:"<<ex.what()<<endl;
    }
   
    //changing the size of a vector
    cout<<"\nCurrent integers3 size is:"<<integers3.size()<<endl;
    integers3.push_back(1000);
    cout<<"New integers3 size is:"<<integers3.size()<<endl;
    cout<<"integers3 now contains:";
    outputVector(integers3);
    return 0;
}

void outputVector(vector<int> &array)
{
    for(int item: array)
    cout<<item<<"  ";
    cout<<endl;
}

void inputVector(vector<int> &array)
{
    for(int &item: array)
    cin>>item;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-22 00:23:44 From FishC Mobile | 显示全部楼层
不好意思,函数定义少了一个const
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 05:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表