如何使用另一个类中的静态方法而不使用:: 我是C++新手,我需要一个预先编写的主文件作为程序的要求。在该文件中,调用另一个类中的方法,就好像它是在主文件中定义的一样。下面显示了此代码的示例
main.cpp如何使用另一个类中的静态方法而不使用:: 我是C++新手,我需要一个预先编写的主文件作为程序的要求。在该文件中,调用另一个类中的方法,就好像它是在主文件中定义的一样。下面显示了此代码的示例,c++,static-methods,C++,Static Methods,main.cpp #include <iostream> #include "foo.h" int main() { cout << factorial(5); return 0; } foo.cpp #include foo.h int foo::factorial(int n) { if (n == 0) return 1; else return n * factorial(n - 1); } #inc
#include <iostream>
#include "foo.h"
int main()
{
cout << factorial(5);
return 0;
}
foo.cpp
#include foo.h
int foo::factorial(int n)
{
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
#include "foo.h"
int factorial(int n)
{
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
产生的错误是:
'factorial': identifier not found
如果在C++中替换CUT
,则不需要单独的包含文件(在这种情况下<代码>)Fo.h“”映射到一个名为
factorial
声明为自由函数,并在foo.cpp
中定义它
福岛水电站
#ifndef FOO_H
#define FOO_H
int factorial(int);
#endif
foo.cpp
#include foo.h
int foo::factorial(int n)
{
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
#include "foo.h"
int factorial(int n)
{
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
如何使用另一个类中的静态方法而不使用::
在这种情况下你不能这样做。在某些情况下,如果应用依赖于参数的查找,这是可能的。ADL在这里不适用,因为参数是文本
如何在main.cpp中调用阶乘(int)
使用范围解析运算符:
您希望在没有范围解析的情况下调用,而希望使用静态成员函数,两者之间存在冲突。你必须选择一个愿望,并放弃它。如果修改
main.cpp
不是一个选项,那么你必须使用一个在全局命名空间中可见的自由函数,而不是成员函数。你需要在你找到它的任何愚蠢的在线测验网站上显示你所展示的真实代码。这显然不是真正的代码,而是伪造的代码,因为所谓的“foo.cpp”中的内容甚至与所谓的“foo.h”的内容不匹配(foo.cpp本身甚至不会编译)。如果提供的唯一文件是main.cpp
,为什么您认为factorial()
是一个类方法,而不仅仅是一个普通函数?正如在另一条评论中指出的那样,您的foo.h
和foo.cpp
也不是自洽的。我试图尽可能简化以删除非必需的代码,但我将在大约10分钟内上传完整的程序,因为我正在走向一个图书馆no。不要“上传完整的程序”。没有人希望看到“完整的计划”。对于stackoverflow.com来说,这是一个离题的话题。请参阅在stackoverflow.com中创建的说明。谢谢,我将尝试将其声明为免费函数谢谢您对范围解析运算符约束的解释