c++ - 您可以使用不带::的命名空间从其他类引用函数吗?

标签 c++

你可以吗?例如,您可以使用 std::cout << "Message"; 在屏幕上打印一行但如果你添加 using namespace std;在代码的顶部,您可以在没有 std:: 的情况下使用它并将其用作 cout << "Message";

你能用自己的代码做到这一点吗?

编辑:让我解释得更好。

假设我有 A 类:

//Class A
#include <iostream>
#include "A.h"
using namespace std;
class A {
public: void testFunction() {
cout << "My message";
}
};

然后,如果我正确设置了 header ,我将能够:

//Class B
#include <iostream>
#include "A.h"
using namespace std;

class B {
int main() {
A aObject; //Create the object
aObject.testFunction(); //This is how I'd have to reference it
return 0;
}
};

所以我想知道的是,即使它在一个单独的类中,是否如何仅使用 testFunction() 来引用该函数?而不是 aObject.testFunction()

最佳答案

类的非静态成员函数只能在该类的对象上调用。这就是他们的目的。你不必有一个命名对象,但你仍然必须有一个对象:

A().testFunction();

如果您将函数设置为static,那么您可以这样调用它:

A::testFunction();

谈论以任何其他方式调用该函数没有任何意义。这就是成员函数的工作方式。听起来您真的想要一个非成员函数,也许在命名空间中。

关于c++ - 您可以使用不带::的命名空间从其他类引用函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720898/

相关文章:

c++ - decltype(*int_iterator + 0) 的类型是什么?

c++ - 在 Windows 7 中管理应用程序音量

c++ - Eclipse- C/C++ <终止,退出值 : -1073741515>

c++ - 发布项目 - 当我在 Eclipse 中完成 C++ 项目后该怎么办?

c++ - 通过c++ tensorflow接口(interface)获取模型的输入输出节点信息

C++ 具有类内初始化程序的成员必须是 const

c++ - 寻求有关消耗多个值的 C++11 printf 格式参数的解释

c++ - 来自 static constexpr std::array 的 UTF-8 constexpr std::string_view 在 MSVC 上无效

c++ - 给定角度和长度,如何计算坐标

c++ - 通过计算或转换在 C++ 中来回转换 2 的值的补码?