Visual c++ &引用;函数已经有一个主体;
这是什么意思Visual c++ &引用;函数已经有一个主体;,visual-c++,Visual C++,这是什么意思 1>c:\users\vitali\documents\visual studio 2010\projects\salam\tools.cpp(107): error C2084: function 'bool readXMLInteger(xmlNodePtr,const char *,int &)' already has a body 1>c:\users\vitali\documents\visual studio 2010\projects\salam
1>c:\users\vitali\documents\visual studio 2010\projects\salam\tools.cpp(107): error C2084: function 'bool readXMLInteger(xmlNodePtr,const char *,int &)' already has a body
1>c:\users\vitali\documents\visual studio 2010\projects\salam\tools.h(52) : see previous definition of 'readXMLInteger'
工具。cpp(107):
工具h(52)
这意味着您的实际代码在某个时刻被重新读入编译流,因此似乎有两次尝试定义(而不是声明)函数
对您设置预处理器语句的方式有所怀疑。这意味着该函数是在代码中的其他地方实现的。也许您已经找到了解决方案,但对我来说,重建解决方案修复了它
我将我的实现从头文件移动到
.cpp
文件,并且.pch
文件已经有了此信息。因此,我必须重新生成以修复此错误。您是否在原始头文件中使用了include guards
例如:
#ifndef _TOOLS_H_
#define _TOOLS_H_
... your header body is here ...
#endif
这阻碍了在每个cpp中重新定义它所包含的内容。以下内容实际上并没有回答您的问题,但我遇到了相同的问题,原因不同。这个答案仅供记录在案 有些人在头文件中添加代码的风格非常糟糕,导致构造函数声明,如
cMyClass(){}
,这已经被认为是一个定义,而不仅仅是一个声明(是的,即使它位于头文件中)
通过将这些定义更改为实际声明来删除它们,例如
cMyClass()
将解决这类问题。此外,请检查您是否在同一目录中复制了文件(.cxx或.cpp扩展名)。因此函数将被定义两次。我得到了静态函数的错误 听着,这听起来很愚蠢,但是对于其他遇到这一问题的人,请确保您没有意外尝试包含cpp文件而不是标题(右键单击文件,复制完整路径,粘贴,发生了…)
查看该文件扩展名有一段时间由于头文件在其他位置被多次调用,因此出现此错误。在头文件顶部插入一次
#pragma
。
值得一看你所有的参考资料,找出重复的电话。或者您的头定义中有卷曲的小册子(比如,空的;)。请确保您查看的是编译器所在文件的同一副本(例如,不同的路径、未保存的更改等)。欢迎使用堆栈溢出!您上面发布的代码看起来不错,所以我怀疑错误是由其他原因造成的。检查以下常见错误-是否在头文件末尾包含.cpp文件?在此期间,您是否完成了干净的构建?您是否有多个.cpp文件
#相互包含?这些(或完全不同的东西)中的任何一个都可能是错误的,但如果没有更多的信息,我想我帮不了忙。
bool readXMLInteger(xmlNodePtr node, const char* tag, int& value);
#ifndef _TOOLS_H_
#define _TOOLS_H_
... your header body is here ...
#endif