friend-function

    1热度

    3回答

    我已经将头文件中的模板类中的>>运算符重新定义为好友函数。在它中,我需要调用另一个名为inputHelper的函数,我也在头文件中定义了这个函数。 (输入助手是递归的) 头文件如下: template< typename NODETYPE > class Forest { /* (other friends) */ friend void inputHelper(istrea

    4热度

    2回答

    class two; class one { int a; public: one() { a = 8; } friend two; }; class two { public: two() { } two(one i) { cout << i.a

    5热度

    3回答

    ,才有可能和/或有用的用户定义文字以限定operator "" (...)为朋友功能? class Puzzle { friend Puzzle operator "" _puzzle(const char*, size_t); ... }; void solve(Puzzle); int main() { solve("oxo,xox"_puzzle); }

    81热度

    2回答

    我读过一个声明为成员函数的重载运算符是不对称的,因为它只能有一个参数,而另一个自动传递的参数是'this'指针。所以没有标准来比较它们。另一方面,被声明为朋友的重载运算符是对称的,因为我们传递了两个相同类型的参数,因此可以进行比较。 我的问题是,当我仍然可以比较一个指针的左值与引用时,为什么朋友更喜欢? (使用非对称版本会得到与对称版本相同的结果) 为什么STL算法只使用对称版本?

    0热度

    2回答

    我一类叫做Packet那我想我QDataStream重载operator>>和operator<<,并在过载功能我叫stream << somIntMember但其宣布为朋友的抱怨为私有变量,以连载 error: 'int DG::Packet::_state' is private error: 'DG::Packet::PacketType DG::Packet::_type' is pri

    0热度

    3回答

    考虑下面的代码: class MyClass { template <typename Datatype> friend MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData); // ... }; template <typename Datatype> MyClass& oper

    3热度

    5回答

    以下示例编译细,但我不能找出如何分离声明和操作员< <()的定义是这样的特定情况。 每次我尝试拆分定义的朋友是造成麻烦和gcc抱怨运营商< <()定义必须采用一个参数。 #include <iostream> template <typename T> class Test { public: Test(const T& value) : value_(value) {}

    1热度

    2回答

    嗨我想在C++中的朋友函数的线上实现一个方法。如果不是这样,为什么java不需要它?请建议如何实现它。如在示例中: public class A {//some variables and methods..private and protected to be used by methods in Class B} public class B {}

    0热度

    2回答

    我有一个模板化的Stack类,内部实现了vector。 这是我(简化)TStack.h的内容: #include <vector> #include <iostream> template<typename T> class TStack; template<typename T> TStack<T> operator+(const TStack<T> &s1, const TStack<

    6热度

    1回答

    考虑以下代码: template <int N> struct X { friend void f(X *) {} }; int main() { f((X<0> *)0); // Error? } 编译器似乎不同意巨资。 (MSVC08/10说不,GCC < 4.5说是,但4.5说不,太阳5.1说是,intel 11.1也说是,但是comeau说不是(都是EDG))。 据“