问题标签 [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.
c++ - 编写下标非成员函数
我猜这在 C++ 中是不合法的,但我想我会问,给定一个我不拥有的结构:
我想为它写一个非成员下标运算符:
错误:
int& operator[](foo&, std::size_t)
必须是非静态成员函数
class - 不包括成员函数和继承,向类添加功能的一些最常见的编程模式是什么?
解决这个问题的方法可能不超过 2-4 种。
我有一种情况,我到处都在使用一个普通的类,并且(有时)我想赋予它特殊的能力。为了论证,假设类型检查不是必需的。
有哪些方法可以为类提供功能而不是简单的继承或成员函数?
我见过的一种方式是“装饰器”模式,其中一种 mutator 环绕类,稍微修改它,并吐出一个具有更多功能的版本。
我读过但从未使用过的另一个是用于游戏的。它与实体和加电/增强有关。我不确定具体细节,但我认为他们有一份清单。
???
我不需要特定语言的特定代码,而是需要一般要点和一些关键字。我可以从那里实施。
c++ - 为什么 std::iterator 不包含 std::prev() 作为成员函数?
为什么 Iterator 类没有 + - 运算符作为成员函数?
或者std::prev()
作为一个成员函数来做到这一点?
prev
定义迭代器外部的函数是否有特殊原因?
c++ - 为什么成员函数地址离自由函数这么远?
举个例子:https ://godbolt.org/z/gHqCSA
我看到成员函数的地址是0x7018400100000000000
,这是可以理解的,因为成员函数指针有 16 个字节,而自由函数0x100401080
只有 8 个字节。
但是,为什么成员函数地址0x7018400100000000000
离自由函数地址那么远0x100401080
呢?即,|0x7018400100000000000 - 0x100401080| = 0x70184000FFEFFBFEF80
?
为什么它不更接近,例如,0x100401...
而不是0x701840...
?还是我打印的成员函数地址错误?
c++ - std::visit 带有重载自由函数而不是函数对象的 std::variant
在 C++17 中是否有一种简单的方法来 std::visit 具有重载自由函数的变体,或者我必须使用具有重载调用运算符的对象?
换句话说,是否可以添加一些简单的东西以使以下//ERROR!
行编译为与该行功能相同//OK!
?
c++ - 从另一个文件访问非成员函数
我想知道是否可以从另一个文件访问非成员函数。也就是说,在 .cpp 而不是在其头文件中声明和定义的函数。
我做了一个简短的例子来说明我在问什么:
我有一个非常基本的头文件Shape.hpp
,它只声明了一个将打印单词“Square”的函数</p>
在Shape.cpp
文件中,我定义了printSquare()
函数,但我还声明并定义了一个名为的新函数printCircle()
这些文件是微不足道的,但我试图以一种非常简单的方式展示我的问题。
现在,在我的Main.cpp
文件中,我尝试同时调用 theprintSquare()
和printCircle()
方法。
有没有办法让我的Main.cpp
文件能够在printCircle()
不修改我的Shape.hpp
或Shape.cpp
文件的情况下使用?
我面临一个非常具体的问题,我正在为一个类编写测试,但需要为非成员函数编写测试。
c++ - C ++“在非成员函数中无效使用'this'”,
下面是我的角色类及其子类的 .cpp 版本。我正在尝试让 attack() 函数正常工作。我做了一些更改,当前的错误处理了 adjustHP() 函数中的“在非成员函数中无效使用 'this'”。在我的主要课程中,我正在实例化一个玩家扮演的战士对象,而地精则是一个无法控制的敌人。
字符.cpp
战士.cpp
妖精.cpp
c++ - 如何在 c++ 中使用模板调用非成员函数,其中类型名仅在返回中?
我的目标是让非成员函数使用模板作为返回值。这样我就可以返回一个浮点数组、一个双精度数组等。我得到一个“无法推断模板参数'T'”错误。
这是我尝试使用的方法:
我首先尝试正常调用该方法。
我尝试在函数名之后添加类型名。
我查看了网络上的几个页面,到目前为止它们都涵盖了成员函数,并解释了不能从返回类型推导出类型,那么你如何告诉编译器类型呢?
c++ - GMock EXPECT_CALL 失败,但在模拟 C 函数时测试返回 OK
我正在尝试根据此处的答案模拟 libusb C 接口:https ://stackoverflow.com/a/41640864/1752391
如果我实际调用了预期的函数,测试运行得很好,但是当函数调用被注释掉时,测试显示错误(调用计数不匹配)但测试的最终结果是好的。
我发现一些关于使用静态对象进行测试的信息可能会导致这种情况,在mathandi的回答中只有指针是静态的,并且对象在 TestFixture 的析构函数中被销毁。还尝试在 TEST_F 函数中创建和销毁对象,但没有帮助。
这可能是一个 GMock 错误,但我非常怀疑。这是一些复制此代码的代码:
和测试:
我没有包含测试 C 自由函数所需的其他必要代码,但我的 libusbMock 指针与 mathandi 的 _bcm2835libMock 指针相同。
有谁知道我错过了什么?
c++ - 在 C++ 中,我如何将一个类的成员函数引用到一个非成员函数,该非成员函数被该类的另一个成员函数进一步调用?
在 C++ 中,我如何将一个类的成员函数引用到一个非成员函数,该非成员函数被该类的另一个成员函数进一步调用?这是我的代码,它返回到这个错误: