声明方法时没有名称空间,也没有对C 作用的方法的对象
No namespace when declaring a method, and no object for the method to act upon in c++
上下文
我正在浏览一个不是我的大型C 代码库,我遇到了这个问题
问题
假设我们在标题文件中有一个(AClass
(:
double MethodName(anObject& obj, string s)
,并且在CXX文件中定义了它,而不是:
double AClass::AMethod(anObject& obj, string s){
正如人们所期望的,而是:
double AMethod(anObject& obj, string s){
没有名称空间声明。这是整个CXX文件中唯一的定义方法。该方法上没有静态声明,AClass
不会从任何其他类中继承。
另外,我看到了它是如何称呼的(在一个完全不同的文件中,除了Aclass.h和Aclass.cxx(,该线看起来像这样:
if(AMethod(obj1, str)>0){
我的问题是,这甚至如何编译和运行。我希望该代码在编译时会步履蹒跚
研究
这很难搜索。它是如此基础,以至于没有直接覆盖,或者发生了一些复杂的事情。如果这是一个简单的问题,请引导我进入我可以搜索的主题。我已经浏览了这些:
将类声明放入.cpp文件
正确的方法来定义.cpp文件中的C 名称空间方法
,但它们不是很相关。我还尝试了谷歌搜索:
" C 在CPP文件中定义一种方法"
" C 在CPP文件中定义方法时没有名称空间"
等,但无济于事。
nb
如果您想降低投票,如果您要提供理由,我将不胜感激,否则,我不会学到。另外,如果您还有更多信息,您需要,我会尽力填补您
谢谢
对于此声明: double MethodName(anObject& obj, string s)
,您不会期望这一点: double AClass::AMethod(anObject& obj, string s)
。您会期望这样:double AClass::MethodName(anObject& obj, string s)
。
您指的是AMethod(obj1, str)>0){
的呼叫仅在.cpp
文件中而不在标题中,因此它是.cpp
-局部函数;没有名称空间;这是一个全球函数。这可能会发生,因此必须包括类的其他类不必编译此功能。如果是这种情况,则Amethod不能使用类成员;它只能使用传递的数据作为变量。
- 有没有一种方法可以在编译时获得作用域类名
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- C++ assigment std::list:<typename>:itrator 在 main 中工作,但在方法中它不起作用
- 转发声明在命名空间中不起作用的替代方法
- 基本加密和解密方法不起作用 C++ 11.
- 结构/方法不起作用
- 指向类中函数方法的指针不起作用
- C++ 互斥锁可以交叉方法/变量吗?如果是这样,为什么在这里不起作用?
- 将字符数组设置为彼此相等的方法不起作用
- ConvertToReferencePoint 方法不起作用,获取作业参数的 NULL (HyperV 2016)
- 为什么方法不起作用?
- C boost :: bimap insert()方法不起作用
- 方法调用意外地像 l 值一样起作用
- 声明方法时没有名称空间,也没有对C 作用的方法的对象
- 为什么我的将向量保存到文件然后再次读出的方法不起作用?
- 为什么这种交换方法不起作用
- 当应用于静态方法时,为什么constexpr属性不起作用
- 在类作用域内不能将“static_assert”与“sizeof”一起使用(但方法作用域可以)
- 当方法抛出异常时,方法作用域的对象将被销毁
- 为什么在方法作用域结束后要更改向量内容