草庐IT

const_defined

全部标签

c++ - Visual C++ 2010 - fatal error LNK1169 : one or more multiply defined symbols found

这是一个程序:#includeusingnamespacestd;intmain(){cout>i;try{if(i==0)throw0;if(i==2)throw"error";}catch(inti){cout在编译时(Windows7上的MicrosoftvisualC++2010express),我收到错误消息:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound 最佳答案 其实这段代码没有错误。源文件的数量可能是问题所在。在同一个编译器中将此代码作为一个新项目尝试,或

c++ - const lambda 是什么意思?

#includeintfoo(inti){constautoa=[&i](){i=7;returni*i;};a();returni;}intmain(){std::cout这会编译(g++-std=c++11-Wall-Wextra-Wpedanticmain.cpp)并返回49。这让我感到惊讶,因为通过将a声明为常量对象,我会期望i被引用为constint&。显然不是,为什么? 最佳答案 Lambda就像非lambda一样,除了它们的实现细节是隐藏的。因此,使用非lambda仿函数可能更容易解释:#includeintfoo(i

c++ - 为什么通过 int& 捕获 const int& 有效?

在下面的代码中,我抛出一个int,将其作为constint&捕获,重新抛出并再次捕获它,将其作为int&捕获。#includeintmain(){try{try{intx=1;throwx;}catch(constint&e){std::cout以上程序编译成功并打印InnercatchOutercatch另一方面,我试图通过constint&初始化int&的以下程序甚至无法编译。#includeintmain(){intx=0;constint&y=x;int&z=yreturn0;}我得到了预期的以下错误binding‘constint’toreferenceoftype‘int&

C++ #define 预处理器

我需要知道C++中的#define指令是否声明了全局标签?我所说的全局是指在每个文件中都可见吗?我正在使用VisualStudio2008,(猜猜这是否重要) 最佳答案 不,仅在当前翻译单元中。即每个具有#define的文件,或包含具有#define的文件的每个文件都将看到定义。编辑,以回应您的评论:要在每个文件中获得一个定义,要么将其放在随处包含的header中,要么使用一些编译器选项来添加定义。例如对于gcc一个会做gcc-Dthedefine=itsvalue不确定如何在VC++中指定此类包含,但我确信它有可能以某种方式实现。

c++ - 海湾合作委员会错误 : invalid conversion from double* to const double

我使用的是gcc4.5.0版。使用下面的简单示例,我假设得到一个错误invalidconversionfromdouble*toconstdouble*#includeusingnamespacestd;voidfoo(constdouble*a){cout为什么编译没有错误?类似的反例如下:#includeusingnamespacestd;voidfoo(constdouble**a){cout(第二个示例的解决方案:将foo定义为foo(constdouble*const*a)。感谢JackEdmonds的评论,这解释了错误消息) 最佳答案

c++ - #define 导致 "expected primary-expression"错误

#defineN10;intmain(){intx;for(inti=0;i用g++编译的结果:test-define.cpp:Infunction‘intmain()’:test-define.cpp:7:22:error:expectedprimary-expressionbefore‘;’tokentest-define.cpp:7:22:error:expected‘)’before‘;’tokentest-define.cpp:7:24:error:namelookupof‘i’changedforISO‘for’scoping[-fpermissive]test-defin

c++ - 为什么要使用 const 成员函数?

我正在尝试理解类getter和setter函数...我的问题是:如果我设计的函数只从其类中获取状态(“getter”函数),为什么将其标记为“const成员函数”?我的意思是,如果我的函数旨在不更改其类的任何属性,为什么还要使用const成员函数?我不明白请:(例如:intGetValue(){returna_private_variable;}和intGetValue()const{returna_private_variable;}真正的区别是什么? 最佳答案 当您将成员函数声明为const时,例如intGetValue()co

c++ - 没有堆的 static const std::vector<char> 初始化?

假设我想要一个无符号字符的std::vector。它是用初始化列表(这是C++11)初始化的,永远不会改变。我想避免任何堆分配,即使在启动时也是如此,并让整个vector像const字符串一样存在于数据段中。那可能吗?IE:staticconstvectorv{0x1,0x2,0x3,0x0,0x5};(这是一个有点学术性的问题;我知道为此使用C数组并不难。) 最佳答案 为什么不直接使用std::array为此?staticconststd::arrayv{0x1,0x2,0x3,0x0,0x5};这避免了任何动态分配,因为std:

c++ - 使 char 函数参数为 const?

考虑这个函数声明:intIndexOf(constchar*,char);其中char*是一个字符串,char是要在字符串中查找的字符(如果未找到char则返回-1,否则返回其位置)。使char也const有意义吗?我总是尝试在指针参数上使用const,但当按值调用某些内容时,我通常会不使用const。你有什么想法? 最佳答案 假设您不打算调整任一参数的值:我会将函数定义为:intIndexOf(constchar*const,constchar){//...}但保留函数声明为:intIndexOf(constchar*,char)

c++ - vector<const int> 是不允许的。为什么 pair<const int, int> 被允许?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whydoesstacknotcompileing++?Ananswertoanotherquestion解释了为什么我们(假设)不能拥有const对象的容器。例如,这是不允许的:vectorv;//notallowed但是为什么对允许第一个对象是const?这确实是map对象中的pair发生的情况。我错过了什么吗?非常感谢对这种现象的详细和直观的解释。