问题标签 [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 投票
2 回答
210 浏览

c++ - 编写下标非成员函数

我猜这在 C++ 中是不合法的,但我想我会问,给定一个我不拥有的结构:

我想为它写一个非成员下标运算符:

我收到此错误

错误:int& operator[](foo&, std::size_t)必须是非静态成员函数

0 投票
2 回答
52 浏览

class - 不包括成员函数和继承,向类添加功能的一些最常见的编程模式是什么?

解决这个问题的方法可能不超过 2-4 种。

我有一种情况,我到处都在使用一个普通的类,并且(有时)我想赋予它特殊的能力。为了论证,假设类型检查不是必需的。

有哪些方法可以为类提供功能而不是简单的继承或成员函数?

  1. 我见过的一种方式是“装饰器”模式,其中一种 mutator 环绕类,稍微修改它,并吐出一个具有更多功能的版本。

  2. 我读过但从未使用过的另一个是用于游戏的。它与实体和加电/增强有关。我不确定具体细节,但我认为他们有一份清单。

  3. ???

我不需要特定语言的特定代码,而是需要一般要点和一些关键字。我可以从那里实施。

0 投票
2 回答
186 浏览

c++ - 为什么 std::iterator 不包含 std::prev() 作为成员函数?

为什么 Iterator 类没有 + - 运算符作为成员函数?

或者std::prev()作为一个成员函数来做到这一点?

prev定义迭代器外部的函数是否有特殊原因?

0 投票
2 回答
96 浏览

c++ - 为什么成员函数地址离自由函数这么远?

举个例子:https ://godbolt.org/z/gHqCSA

我看到成员函数的地址是0x7018400100000000000,这是可以理解的,因为成员函数指针有 16 个字节,而自由函数0x100401080只有 8 个字节。

但是,为什么成员函数地址0x7018400100000000000离自由函数地址那么远0x100401080呢?即,|0x7018400100000000000 - 0x100401080| = 0x70184000FFEFFBFEF80

为什么它不更接近,例如,0x100401...而不是0x701840...?还是我打印的成员函数地址错误?

0 投票
2 回答
1113 浏览

c++ - std::visit 带有重载自由函数而不是函数对象的 std::variant

在 C++17 中是否有一种简单的方法来 std::visit 具有重载自由函数的变体,或者我必须使用具有重载调用运算符的对象?

换句话说,是否可以添加一些简单的东西以使以下//ERROR!行编译为与该行功能相同//OK!

0 投票
1 回答
181 浏览

c++ - 从另一个文件访问非成员函数

我想知道是否可以从另一个文件访问非成员函数。也就是说,在 .cpp 而不是在其头文件中声明和定义的函数。

我做了一个简短的例子来说明我在问什么:

我有一个非常基本的头文件Shape.hpp,它只声明了一个将打印单词“Square”的函数</p>

Shape.cpp文件中,我定义了printSquare()函数,但我还声明并定义了一个名为的新函数printCircle()

这些文件是微不足道的,但我试图以一种非常简单的方式展示我的问题。

现在,在我的Main.cpp文件中,我尝试同时调用 theprintSquare()printCircle()方法。

有没有办法让我的Main.cpp文件能够在printCircle()不修改我的Shape.hppShape.cpp文件的情况下使用?

我面临一个非常具体的问题,我正在为一个类编写测试,但需要为非成员函数编写测试。

0 投票
2 回答
610 浏览

c++ - C ++“在非成员函数中无效使用'this'”,

下面是我的角色类及其子类的 .cpp 版本。我正在尝试让 attack() 函数正常工作。我做了一些更改,当前的错误处理了 adjustHP() 函数中的“在非成员函数中无效使用 'this'”。在我的主要课程中,我正在实例化一个玩家扮演的战士对象,而地精则是一个无法控制的敌人。

字符.cpp

战士.cpp

妖精.cpp

0 投票
2 回答
258 浏览

c++ - 如何在 c++ 中使用模板调用非成员函数,其中类型名仅在返回中?

我的目标是让非成员函数使用模板作为返回值。这样我就可以返回一个浮点数组、一个双精度数组等。我得到一个“无法推断模板参数'T'”错误。

这是我尝试使用的方法:

我首先尝试正常调用该方法。

我尝试在函数名之后添加类型名。

我查看了网络上的几个页面,到目前为止它们都涵盖了成员函数,并解释了不能从返回类型推导出类型,那么你如何告诉编译器类型呢?

0 投票
0 回答
73 浏览

c++ - GMock EXPECT_CALL 失败,但在模拟 C 函数时测试返回 OK

我正在尝试根据此处的答案模拟 libusb C 接口:https ://stackoverflow.com/a/41640864/1752391

如果我实际调用了预期的函数,测试运行得很好,但是当函数调用被注释掉时,测试显示错误(调用计数不匹配)但测试的最终结果是好的。

我发现一些关于使用静态对象进行测试的信息可能会导致这种情况,在mathandi的回答中只有指针是静态的,并且对象在 TestFixture 的析构函数中被销毁。还尝试在 TEST_F 函数中创建和销毁对象,但没有帮助。

这可能是一个 GMock 错误,但我非常怀疑。这是一些复制此代码的代码:

和测试:

我没有包含测试 C 自由函数所需的其他必要代码,但我的 libusbMock 指针与 mathandi 的 _bcm2835libMock 指针相同。

有谁知道我错过了什么?

0 投票
0 回答
49 浏览

c++ - 在 C++ 中,我如何将一个类的成员函数引用到一个非成员函数,该非成员函数被该类的另一个成员函数进一步调用?

在 C++ 中,我如何将一个类的成员函数引用到一个非成员函数,该非成员函数被该类的另一个成员函数进一步调用?这是我的代码,它返回到这个错误: