求助一个小问题,我实在不会了,谢谢了
但是删掉const就可以编译通过,为什么? output函数编译问题,如果去掉const可以编译通过,加上就无法通过 本帖最后由 sp1ral 于 2017-12-20 21:48 编辑const在c++里一般是定义常量用的
你改成static sp1ral 发表于 2017-12-20 21:47
const在c++里一般是定义常量用的
你改成static
但是我对array使用const是可行的,我只是想强调传入的向量是不可改变的,并不想它作为静态变量一直存在于内存中 sp1ral 发表于 2017-12-20 21:47
const在c++里一般是定义常量用的
你改成static
很不幸的是。。。。。。。。改成static还是编译错误
Invalid storage class specifier in function declarator 新手回复这些问题真是力不从心呀 我查了一下书:
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后面
sp1ral 发表于 2017-12-21 09:50
我查了一下书:
const int *p
int a = 1
放在哪里都不可以,是xcode本身编译器的问题么,我这个代码是从书上找的,应该不会有错 #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 is"<<integers1;
//use square brackets to creat lvalue
cout<<"\n\nAssigning 1000 to integers1"<<endl;
integers1=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;
}
不好意思,函数定义少了一个const
页:
[1]