friend-function

    1热度

    2回答

    我有两个类Humidity和Temperature。他们有朋友的功能,那就是在他们的头文件中声明: friend void PrintWeather(const Temperature &cTemperature, const Humidity &cHumidity); 哪里是很方便的实现功能(Temperature.cpp,Humidity.cpp,或another_file.cpp)?

    1热度

    1回答

    我采取了免费的版权模板代码,并根据自己的需要进行了修改,但仍然努力使其工作。我希望有一些帮助理解。 问题是,我并不真正了解如何重载工作,特别是使用>>操作符,如下例所示。为什么您返回朋友&运算符函数中的对象logger。我不明白如何使void print();工作,并与朋友重载operator <<。 这是示例代码: #pragma once #include <fstream> nam

    14热度

    2回答

    考虑下面的代码: #include <vector> template<typename T> class Container; template<typename T> Container<Container<T>> make_double_container(const std::vector<std::vector<T>>&); template<typename T> clas

    0热度

    3回答

    我有两个类之间的朋友函数的问题。让我们来看看一些代码: 第一类: #ifndef _FIRST_H_ #define _FIRST_H_ //#include "Second.h" #include <string> class Second; class First { friend void Second::fun(); std::string str =

    -4热度

    2回答

    我想访问类别为MainWindow的私人对象,朋友功能void recognized(RecoResult *result)已在参数result中拥有另一个名称空间LapsAPI::RecoResult。我如何在这个朋友功能里访问Ui::MainWindow *ui? mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #includ

    1热度

    1回答

    我试图指定一个类成员函数作为另一个类的朋友, 但它只给我的访问权限,而不是受保护或私人成员的公共成员。它的免费功能工作正常。 Visual Studio中的错误: member "Class1::protected_int" (declared at line 9) is inaccessible member "Class1::private_int" (declared at line 11

    0热度

    1回答

    这是我编写的用于访问类中的矩阵的代码,并使用少于运算符并等于运算符来比较同一类的两个对象。但编译器会引发错误。 #include <bits/stdc++.h> using namespace std; class node { private: int a[5][5]; public: int& operator()(int i, int j) { re

    0热度

    1回答

    我有一个类只能由一些工厂函数构造而不是直接构建。 这些工厂函数都具有相同的名称,但根据作为模板参数传递的枚举值进行区分(请参阅this answer中介绍的第一种方法)。 这些功能的例子: enum Tag { foo, bar, tag3 }; //declarations template <Tag> myClass Factory(int, char)

    -1热度

    2回答

    我正在处理包含私有嵌套节点类的链接列表类。我想通过使用重载加法运算符在列表中向前推进n个节点,但是clang正在给出错误“过载”运算符+'必须是一元运算符或二元运算符(有3个参数)“。当我将它声明为朋友函数时,我认为隐含的这个参数消失了。 首先是我的头文件 template <class T> class List { private: class ListNo

    3热度

    2回答

    之外以下非模板代码works well: struct A { }; struct B { B() {} B(const A&) {} friend B operator+(const B&) { return B(); } }; B operator+(const B&); int main() { A a; B b;