草庐IT

argument-passing

全部标签

C++ Lint : detect improper pass by value

你好。是否有一个lint工具可以找到所有按值接受非原始参数的函数声明。我的googleFu失败了。谢谢。 最佳答案 是的,Cppcheck可以做到这一点(在各种其他有用的检查中)。由于这种特殊情况在Cppcheck中被视为“样式”警告,因此您需要使用--enable=all命令行开关。 关于C++Lint:detectimproperpassbyvalue,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

c++ - 为什么我收到错误 : initializing argument 1 of 'Item::Item(int)' [-fpermissive] in Eclipse when I try to compile my C++ code?

我是C++的新手,在盯着它看了太久之后终于放弃了尝试编译它。编译器似乎出于某种原因拒绝了头文件中的构造函数原型(prototype)......我无法弄清楚它有什么问题。项目.h:#ifndefITEM_H_#defineITEM_H_classItem{public:Item(int);//ThislineiswhatEclipsekeepsflaggingupwiththeerrorinthetitlevirtual~Item();Item*getNextPtr();intgetValue();voidsetNextPtr(Item*);};#endif/*ITEM_H_*/在我的

c++ - 如何在 C++ mex 函数中传递 Matlab m x n 单元格矩阵参数?

我想将在Matlab中创建的这样一个单元格矩阵作为输入参数传递给mex函数,fori=1:5,p{i}=rand(3,4);end然后将其作为3维double组作为输出参数返回。预期语法:Parray=convert(p);其中Parray是一个3×4×5数值数组并且P(:,:,i)=p{i};我正在使用的以下代码可以成功地构建到所需的mex函数中:#include#include#include#include#include#include#include#include"mex.h"usingnamespacestd;voidmexFunction(intnlhs,mxArray

c++ - 错误 : Use of class template requires template argument list

当我尝试运行我的程序时,此错误显示为“errorC2955:'FOURTEEN':useofclasstemplaterequirestemplateargumentlist”#includeusingnamespacestd;templateclassFOURTEEN{private:Ta[n];public:voidReadData();voidDisplayData();};voidFOURTEEN::ReadData(){for(inti=0;i>a.[i];}voidFOURTEEN::DisplayData(){for(inti=0;i>a.[i]P;//Readdatai

c++ - 集成 LLVM passes

这可能是一个菜鸟问题,但有没有办法集成我的LLVMmodulepass以在转换阶段默认调用?现在我正在使用这个语法来加载我的通行证并注册它~/llvm/llvm/build/Debug+Asserts/bin/clang-Xclang-load-Xclang~/llvm/llvm/build/Debug+Asserts/lib/SOMEPASSLIB.so(问题是当我想用这个pass构建一些包时,编译器在我说时接受它,将加载部分作为CFLAGSenv变量传递,但是一些makefile也使用CFLAGS进行链接,链接器不知道它可以使用此信息做什么并导致构建失败:\)

c++ - xutility.h 错误 C2064 : term does not evaluate to a function taking 2 arguments

我有问题要问。我创建了一个名为AstarPlanlama的类并具有以下2个函数:boolAstarPlanlama::nodeComp(constNode*lhs,constNode*rhs){returnlhs->FF;}voidAstarPlanlama::enKucukFliNodeBul(std::list*OPEN){std::list::iteratorit=std::min_element(OPEN->begin(),OPEN->end(),&AstarPlanlama::nodeComp);OPEN->sort(&AstarPlanlama::nodeComp);Q=O

c++ - 候选函数不可行 : 1st argument ('const Node *' ) would lose const qualifier

我正在使用内置的C++编写有向图(有向图)类unordered_map>数据结构,其中Node和Edge是我自己定义的两个结构体。在类里面我写了一个containsNode()搜索Node的方法在图中。这是containsNode()方法体:boolDiGraph::containsNode(constNode*n)const{auto::const_iteratorit=digraph.find(n);return(it==digraph.end());}digraph是unordered_map>类型的DiGraph的私有(private)成员.但是,编译器会生成以下错误:erro

c++ - 可变参数模板 : Pass parameter pack without expansion

旧的Cstdio工具提供了一种使用vprintf工具传递可变参数集的方法。是否有类似的方式来传递C++0x可变模板参数包而不扩展它?如果您有一个采用可变参数模板参数包的派生类构造函数,并且需要简单地将其传递给基类构造函数,而不是将其解包,这可能会很有用。例如:templateBase::Base(constT&v,constArgs&...args){/*...expandargshere....*/}templateDerived::Derived(constT&v,constArgs&...args):Base(v,args){/*...don'texpandargs...*/}我

用于传递参数的 Java 与 C++

关于Java和C++如何传递参数,我开始有点混淆。这是正确的吗:Java使用按值调用传递,但该值实际上是引用(不是实际数据/对象)。所以复制了地址?默认情况下,C++按值传递,但值不是引用,而是实际数据。如果你想通过引用模拟真实的调用使用&或者一个指针?总而言之,Java会复制参数,但它是引用的拷贝。C++通常会复制而不是复制实际底层数据的引用(除非您使用&或指针)? 最佳答案 C++(03)总是制作拷贝,除非您通过引用传递。(理论上......在实践中,复制省略可以发生,但这与问题无关)如果你通过指针传递,你仍然制作一个拷贝(当然

c++ - 了解 "template argument is invalid"错误消息

考虑代码:#include#includestructtest1{voidInvoke(){};};structtest2{templatevoidInvoke(){};};enumclassInvokableKind{NOT_INVOKABLE,INVOKABLE_FUNCTION,INVOKABLE_FUNCTION_TEMPLATE};templatestructget_invokable_kind{conststaticInvokableKindvalue=InvokableKind::NOT_INVOKABLE;};templatestructget_invokable_ki