C2084 在不同函数的同一文件中调用函数时出错
C2084 error when calling function in same file in a diffrent function
所以,我正在尝试在.h文件中创建一个组合学库。我有一个函数,用于计算数字 n 的阶乘,后跟一个函数(在同一文件中),该函数使用阶乘函数计算给定 n 和 k 的 n 选择 k 的组合。但是当我尝试编译代码时,它会向我抛出此错误:C2048 函数"long factorial(int)"已经有一个主体。(我正在使用VS 2015)
代码如下:
long int factorial(int n) // factorial of n
{
int summation = n;
for (int i = 1; i < n; i++)
{
summation *= i;
}
return summation;
}
double combination(int n, int k) // n choose k
{
return (factorial(n) / (factorial(k) * factorial(n - k)));
}
double permutation(int n, int k) // n permutation k
{
if (k != n)
return (factorial(n) / factorial(n - k));
else
return factorial(n);
}
double repetitiveCombination(int n, int k) // repetitive combination of n choose k
{
return combination(n - 1 + k, k);
}
double orderEquals(int n, int p) // order n objects of wich p are equal
{
return (factorial(n) / factorial(p));
}
很可能你没有标题护罩。您的标题应如下所示:
#ifndef MYHEADERNAME_H
#define MYHEADERNAME_H
// Your code is here
#endif //end of MYHEADERNAME_H
维基百科信息在这里。
您
提供的此代码(或其中的一部分)位于标头中,并且您将标头包含在两个CPP文件中,因此出现错误。或者,错误地将factorial
的实现放入两个源文件中。仔细看。
所以,我正在尝试在.h文件中创建一个组合数学库。
如果将非类成员实现放入头文件中,则需要在函数前面加上 inline
关键字,例如:
inline long int factorial(int n) // factorial of n
// ^^^^^^
{
int summation = n;
for (int i = 1; i < n; i++)
{
summation *= i;
}
return summation;
}
此外,将所有
函数放入自己的命名空间中也是一个好习惯。
相关文章:
- 函数调用中参数的顺序重要吗
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 变量没有改变?通过向量的函数调用
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 模板函数调用
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 析构函数调用
- 成员函数调用和C++对象模型
- 使用共享指针的函数调用,其对象应为 const
- C++:编译时检查匹配的函数调用对?
- 函数调用C++中的参数太少
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 返回指向对象的指针的函数调用是否为 prvalue?
- C++ 如何重载 [] 运算符并进行函数调用
- 代码的效率. 转到和函数调用
- 是同一作用域的函数部分中的函数调用
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 类型擦除的std::function与虚拟函数调用的开销