friend

    6熱度

    1回答

    我發現「如何在聲明之外定義一個模板類的朋友模板函數」(SO/cppreference),但如何在混合中添加另一個內部非模板類? I.e.如何(外部)定義從下面的例子宣佈class Internaloperator<<: #include <iostream> template <typename T> class External { public: explicit Exter

    0熱度

    2回答

    我遇到了以下問題,我不知道最好的解決方法是什麼。我想評估使用foo對象構建的對象expression。應允許expression類及其派生類訪問foo的私有成員;但除了將所有派生類單獨聲明爲朋友之外,我不知道如何才能完成這項工作 - 我可以聲明一個虛擬函數foo的朋友嗎? class foo{ public: foo(int a, int b, int c) : a(a), b(b

    1熱度

    1回答

    class BinarySearchTree { private: Node *root; public: BinarySearchTree() ; ~BinarySearchTree(); void insert_node(int, Node*); void print_tree(Node *); friend Node* get

    0熱度

    1回答

    // PhysicalTraits.h struct PhysicalTraits { unsigned int age; // years double height; // meters PhysicalTraits(const double H = 0.0, const unsigned int A = 0u) : age (A), height(H) {}

    4熱度

    3回答

    有人可以向我解釋g ++的警告嗎? 考慮下面的代碼 #include <iostream> namespace foo { struct bar { friend std::ostream & operator<< (std::ostream &, bar const &); }; } std::ostream & foo::operator<< (std::ost

    -1熱度

    1回答

    我想通過使用朋友函數和構造函數來初始化值,但得到錯誤'複雜1 ::複雜1()的未定義引用'可以有人建議我去哪裏錯了。 #include<iostream> using namespace std; class complex1 { float real,img; public: complex1(); complex1(float a,float b)

    0熱度

    1回答

    假設我有四個類,A1,B1,B2和C1。 A1是基類,B1和B2從A1公開繼承,C1從B1和B2公開繼承。 B1和B2是虛擬類。 現在,假設我需要在A1中定義的成員函數。 是否有可能使B1和B2無法訪問成員函數,但C1可訪問?如果成員函數受保護或公開,那麼B1和B2仍然可以訪問它,所以這是行不通的。如果它是私人的,那麼C1無法訪問它,所以這是行不通的,所以我有點卡在這裏。我在C++方面還很缺乏經驗

    -3熱度

    2回答

    簡短的問題 - 爲什麼我會收到此消息? 謝謝。

    2熱度

    1回答

    我正在嘗試實現CRTP類的層次結構。我對基類能夠訪問一個派生類向下該鏈的數據成員: #include <iostream> template <class Derived> class A { public: void showv() { std::cout << static_cast<const Derived*>(this)->v << std::endl;

    1熱度

    3回答

    我的node班需要相應的linked班才能成爲朋友。我寫它作爲 template <typename T> class node{ T value; node<T> *next; friend class linked<T>; }; template <typename T> class linked{ linked(); ~linked