草庐IT

TYPE_SCROLL_SENSITIVE

全部标签

c++ - 为什么我们在定义指针时使用 "type * var"而不是 "type & var"?

我是C++的新手(断断续续有大约一年的经验)。我很好奇是什么导致决定将type*name作为定义指针的语法。在我看来,语法应该是type&name因为&符号在代码中的其他任何地方都使用来引用变量的内存地址。因此,使用int指针的传统示例:inta=1;int*b=&a;会变成inta=1;int&b=&a我确信这其中有一些我没有看到的原因,我很想听听C++老手的一些意见。谢谢,-S 最佳答案 C++采用了C语法。正如“TheDevelopmentoftheCLanguage”(DennisRitchie着)中所揭示的那样,C在类型声

c++ - 哪种转换是从 Type* 到 void*?

在C++中,对于任何数据类型,我都可以执行以下操作:Type*typedPointer=obtain();void*voidPointer=typedPointer;当我将Type*分配给void*时执行哪个转换?这和Type*typedPointer=obtain();void*voidPointer=reinterpret_cast(typedPointer);还是其他Actor? 最佳答案 这是一个标准的指针转换。由于它是标准转换,因此不需要任何显式转换。如果您想使用显式转换重现该转换的行为,则应使用static_cast,而

c++ - 如何在 C++03 中使用 "dereference a type"?

如何在C++03中获取另一种类型的“解引用类型”?请注意,它可以是其他可取消引用的类型,例如std::vector::iterator.例如如果我有templatestructMyPointer{Tp;???operator*(){return*p;}};我怎样才能弄清楚用什么替换???和?(没有提升!我想知道如何自己解决。) 最佳答案 templatestructdereference;templatestructdereference{typedeftypenameTtype;};templatestructMyPointer{

c++ - 错误 : ‘i’ does not name a type with auto

这个问题在这里已经有了答案:HowdoIenableC++11ingcc?(4个答案)关闭7年前。我是C++新手,这是我的程序#include#include#include#include#includeintmain(){staticconstdoublearr[]={16.0,2.2,77.5,29.0,24.0};std::vectorvec(arr,arr+sizeof(arr)/sizeof(arr[0]));std::transform(vec.begin(),vec.end(),vec.begin(),bind2nd(std::minus(),3.0));for(aut

c++ - 从 std::array 等获取 size_type 的惯用方法

由thisquestion触发,我想出了以下代码(在我的回答中是boost::array,但同样适用于std::array):template::size_typesize>voidDataTransform(std::arraydata){}我对::size_type一点都不满意.我必须以一定的大小进行实例化,才能知道size_type.对于std::array我本可以使用size_t,那么一般情况呢?如果size_type怎么办不是size_t?或者更一般的(即不适用于std::array)如果size_type怎么办?不同的尺寸是不同的(愚蠢但可能)?我知道这个问题相当学术,有很

c++ - 错误 : '...' does not name a type

我有一个工作项目。重新安排一些代码后,我尝试重新编译我的项目,然后奇怪的事情开始发生。查看编译器输出的这段摘录。我正在使用MinGWG++从Windows上的Eclipse进行编译。****BuildofconfigurationDebugforprojectPract2********InternalBuilderisusedforbuild****g++-O0-g3-Wall-c-fmessage-length=0-omove.o..\move.cppInfileincludedfrom..\/game.h:11:0,from..\/piece.h:10,from..\/move.

为什么我遇到错误:attributeError:'int'对象没有属性'type'

我正在将LLVMlite与Pyvex结合使用。我已经在llvmlite中定义了一些功能,如下所示:defint32(val):returnir.Constant(ir.IntType(32),val)defput64(putoffset,val):llvmtmp=builder.gep(regtag,(int32(0),int32(putoffset)),True)returnbuilder.store(val,llvmtmp)但是,当我想使用以下代码调用此函数时:forstmtinirsb.statements:ifisinstance(stmt,pyvex.IRStmt.Put):puto

C++11 decltype : How to declare the type that a pointer points to?

我有以下代码:#includeintmain(){int*a=newint(2);std::unique_ptrp(a);}导致这些错误信息:Infileincludedfroma.cpp:1:Infileincludedfrom/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../include/c++/4.9.2/memory:81:/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../include/c++/4.9.2/bits/

c++ - 根据 value_type 调用适当的构造函数 : integer or float

我有一个函数,它使用均匀分布将最小值和最大值之间的随机值填充到容器中。#include#include#include#includetemplatevoiduniform_random(TContainer&container,consttypenameTContainer::value_typemin,consttypenameTContainer::value_typemax){std::random_devicerd;std::mt19937gen(rd());//Belowlinedoesnotworkwithintegerscontainerstd::uniform_rea

c++ - 在哪里可以找到 C++ STL 中 vector 的 size_type 定义?

将vector的size()函数的结果转换为unsignedint似乎是安全的。不过,我怎么能确定呢?我的文档不清楚size_type是如何定义的。 最佳答案 不要假定容器大小的类型(或在其中键入的任何其他内容)。今天?目前最好的解决方案是使用:std::vector::size_type其中T是您的类型。例如:std::vector::size_typei;std::vector::size_typej;std::vector>::size_typek;(使用typedef可以帮助使其更好地阅读)对于迭代器和“内部”STL容器中的