问题标签 [non-member-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1405 浏览

c++ - c++ --direct--非成员函数体中类成员的访问

下面的例子显然是错误的,但我想知道是否有可能实现如下

我知道如果不将 A 类的实例传递给函数然后访问变量return_value()return_value(A &a)a.k

注意函数return_value()是一个例子。我想知道在 C++ 语言范围内是否有一种方法可以直接访问非成员函数体中的变量

0 投票
3 回答
21056 浏览

c++ - Free function versus member function

What is the advantage of having a free function (in anonymous namespace and accessible only in a single source file) and sending all variables as parameters as opposed to having a private class member function free of any parameters and accessing member variables directly?

header:

source:

If you prefer making them members, then what if I have a case where I first call a function that is not accessing any member variables, but that function calls another function which is accessing a member. Should they both be member functions or free?

0 投票
1 回答
170 浏览

c++ - 为什么 boost 建议使用核心函数而不是成员函数?

boost.geometry的文档中,它指出

注意:更喜欢使用 x = bg::get :<0>(point1);
(相对于 x = point1.get<0>();)

我在 boost 文档的其他地方看到了这一点。我的问题是为什么?这是一个最佳实践的东西,一个性能的东西还是一些怪癖?这是该库的一般规则还是特定于该库?

0 投票
3 回答
2006 浏览

c++ - Why are C++11 string new functions (stod, stof) not member functions of the string class?

Why are those C++11 new functions of header <string> (stod, stof, stoull) not member functions of the string class ?

Isn't more C++ compliant to write mystring.stod(...) rather than stod(mystring,...)?

0 投票
0 回答
257 浏览

overloading - 访问私有数据成员的非朋友、非成员函数

我正在尝试使用istream下面的函数来访问私有数据成员的分子和分母,但是,我收到了关于它是私有的错误。istream是一个非朋友、非成员函数(我不能让它成为朋友)。我知道我不能直接访问私人成员,但我的引用不应该MyFraction允许我访问吗?

我有吸气剂(getNumerator()getDenominator()),但是,我也不能以这种方式访问​​成员。我也收到一个错误:

运算符>>的模棱两可的重载。

我的吸气剂确实按值返回:

我在这个功能中忽略了什么?

0 投票
3 回答
3049 浏览

c++ - C++:非成员函数和静态成员函数的区别?

一个简单的问题,这里:静态成员函数(即无需对象访问即可调用的函数(仅使用类标识符))与非成员函数有什么区别?在这里,我在概念上和功能上都在问。

非成员函数在概念上是静态的吗?

0 投票
1 回答
10549 浏览

c++ - 错误 C2270:非成员函数上不允许使用修饰符

编译时出现此错误:

错误 C2270:“busco”:非成员函数上不允许使用修饰符

我想我明白原因,但我不知道如何解决它,如果我const取出我会收到 C2662 错误。

这是代码:

谢谢!

0 投票
2 回答
100 浏览

c++ - 何时/如果使非虚拟函数成为成员函数

我试图了解现代 C++ 习语和最佳实践,我想问一下,在编写类时,是否曾经有过让函数成为成员函数而不是类中的自由函数的时候命名空间,此外,当您需要基于类的类型进行运行时分派时。

我在想也许是当您需要访问班级的私人成员时,但您也可以创建一个免费的朋友功能并获得相同的效果,但具有免费功能的好处,所以我不确定什么是最好的案子。

让非虚拟函数成为成员是否合理?

0 投票
1 回答
220 浏览

c++ - 将重载运算符重构为非成员函数会破坏任何代码吗?

考虑一个带有重载加法运算符的遗留类模板+=+

在代码审查中,观察到它+是可以实现的+=,那么为什么不让它成为一个非成员(并且保证左右参数的对称性)?

它看起来足够安全,因为所有有效的表达都使用++=保留了它们原来的语义含义。

问题:从成员函数重构operator+为非成员函数会破坏任何代码吗?

破损的定义(从最坏到最好)

  • 将编译在旧方案下未编译的新代码
  • 在旧场景下编译的旧代码将无法编译
  • 新代码将静默调用不同的operator+(从通过 ADL 拖入的基类或关联命名空间)
0 投票
3 回答
596 浏览

c++ - 将成员或非成员函数指针作为参数传递

我有一个名为 Foo 的结构,其中包含一个函数,该函数调用它传递的任何方法并返回值。

我有一个名为 barFunc 的方法...

...可以很好地传递给 fooFunc

但我也希望 fooFunc 接受成员函数,比如 bazFunc ....

……被这样称呼……

...但这是无效的。

我在将成员函数作为参数传递的主题上找到的所有内容都在谈论在调用对象之前知道对象来自哪个类,这意味着我必须创建 2 个函数而不是一个。

有没有一种我还没有找到的方法,它只需要 1 个 fooFunc 方法,但会支持非成员和成员函数?