cost 308 ms
第一個朋友 function 模板聲明通過“使用命名空間”可見,但通過限定名稱查找不可見

[英]first friend function template declaration is visible through `using namespace` but not through qualified name lookup

我有以下代碼,我用 C++11 編譯。這段代碼是對現實世界用法的簡化。namespace bar { template<int M = 10> struct S { template<int N = M*2> friend int foo(S) { ...

當模板化 function 部分依賴於類和自定義模板參數時,將其聲明為友元

[英]Declare templated function as friend when it partially depends on class- and on custom template parameters

作為上一個問題的延續,我現在處於這樣一種情況,我想將 function 聲明為朋友,它取決於 class 模板參數 ( R ) 和其他模板參數 ( Cb ) 的組合。 如何在 class 上下文中正確指定它? 我天真的方法似乎不起作用: 演示 錯誤: ...

朋友聲明了一個非模板 function,即使它駐留在模板化的 class 中(僅 gcc)

[英]Friend declares a non-template function even though it resides in templated class (only gcc)

下面的示例編譯但 gcc 警告我朋友聲明實際上不是模板化的 function。我不明白我到底應該改變什么。 Clang 和 MSVC 毫無問題地接受此代碼。 在這個問題中,暗示你應該將template <typename T>放在類內朋友聲明的前面,但隨后 gcc 抱怨隱藏 T。 ...

將函數指定為 Friend C++

[英]Designating functions as Friend C++

我正在查看以下文檔 https://en.cppreference.com/w/cpp/language/friend 第一個語法示例(朋友函數聲明)讓我感到困惑它說: 指定一個 function 或幾個函數作為這個 class 的友元 我的困惑來自以下代碼行friend char* X::foo ...

2023-01-15 22:12:00   1   77    c++ / friend  
Function 模板作為 class 模板的朋友

[英]Function template as friend of class template

在下面的示例中,我希望 function 模板get()成為 class 模板any_of的友元。 我認為這是顯而易見的,因為any_of應該是一個朋友,所以只有類型參數的get實例化。 索引I不應該是免費的。 我想實現所有get<N, char, char>都是any_of<ch ...

如何使用友元函數獲取 class 中變量的值

[英]How to get values for the variables inside a class using a friend functions

在上面的代碼中,即使我通過 getdata(a) function 輸入值,當 printdata(a) function 運行時,默認構造函數中的值也會顯示在控制台屏幕上。 當我使用構造函數創建 object 時,情況並非如此,就像創建 object b 時一樣。 我該怎么辦? ...

使用 class 模板重載 operator<< 時會發生奇怪的事情

[英]Wierd stuff happens when overloading operator<< with a class template

這是我期望實現的功能: 我的實施: 產生錯誤: 但是,當我更改 operator&lt;&lt; 的參數以接受darray&lt;U&gt;時,它工作正常: 我在這里錯過了什么? 更新: 我也嘗試這樣做,在定義和實現中將參數更改為darray&lt;U&gt;類型,但它仍然會產生相同的錯誤: ...

如何以更有效的方式從文本文件中讀取雙打?

[英]How to read in doubles from a text file in a more efficient way?

我有一組代碼可以從文本文件中讀取整數並將其放入某個矩陣 object 中。 我想修改這個 function,這樣當我打電話給接線員時,它會正確讀取雙精度值。 我閱讀整數的方式是假設數據線的每個增量都是一個新的整數。 然而,這對雙打不起作用。 我如何修復這個 function 以便它正確處理文本文件 ...

operator&lt;&lt; 重載需要 const 輸入參數進行編譯

[英]Overloading of operator<< requiring const input argument for compilation

在編譯以下重載 ostream 運算符的標准代碼時,出現編譯錯誤“錯誤:'operator&lt;&lt;' 不匹配(操作數類型為 'std::ostream' {aka 'std::basic_ostream'} 和 'Digit') "正在為后修復增量控制台輸出案例返回。 很明顯,使第二個參數“ ...

class模板的朋友有問題

[英]Problems with friends of class template

我正在嘗試為我的 class 模板創建一些朋友功能。 我知道您必須首先在 class 之外聲明它們,但我得到了一些奇怪的結果。 ... ... 兩個 stream 運算符對我來說工作正常,但乘法運算符有問題。 出於某種原因,編譯器(Visual Studio)似乎認為我正在嘗試聲明一個數據成員並 ...

為什么 class 內的 function 的 C++ 友誼與獨立的 ZC1C425268E47385D14ZA7 不同?

[英]Why C++ friendship for function inside a class does not work same as a standalone function?

我想知道為什么以下兩個代碼之一編譯而另一個不編譯。 在第一個代碼中,createB 是一個獨立的 function。 在第二個代碼中,function createB 是 class A 的成員。 第一個編譯。 第二個沒有。 ...

C++20 后友元聲明中的模板特化

[英]Template specializations in friend declarations post C++20

上下文:令我們驚訝的是,啟用了 C++20 模式和兩階段合規性的 MSVC 接受以下代碼: 這將在 MSVC 和 gcc(但 clang 吠)中編譯/鏈接並返回10 : https://godbolt.org/z/98cd7 。 那些知道兩階段查找的人會發現這看起來很瘋狂——我們可以在相應的模板被聲 ...

與朋友 class 在 C++ 中的命令設計模式

[英]Command design pattern with friend class in C++

情況:我必須處理各種命令並采取行動,這些命令可以封裝在命令設計模式中。 所以現在我有 當然,我將此接口繼承到我的各個命令類中。 然而現在,我意識到僅僅通過IFoo是不夠的。 我希望能夠訪問我的ConcreteFoo class 中的私有數據成員。 我證明這種封裝中斷是合理的,因為歸根結底,所有這些對 ...

C++ 中模板化 class 的模板化友元的顯式模板實例化

[英]Explicit template instantiation of templated friend of templated class in C++

我有一個主要的 class MainClass ,其私有成員變量應該對朋友 class FriendClass 。 兩者都由一個名為dim的int模板化,並且它們都有各自的 header 和源文件(因此位於不同的翻譯單元中)。 由於MainClass並不真正依賴於FriendClass (並避免循環 ...

如何修復涉及概念和朋友的 C++20 編譯錯誤?

[英]How can I fix a C++20 compile error involving concepts and friends?

假設我從這個使用 C++20“概念”的簡單示例開始: 這編譯,並且概念驗證FooThing class 有一個方法foo 。 但是假設我想將方法foo設為私有,並從FooThing的另一種方法在FooThing DoFoo 所以我嘗試添加一個朋友聲明: 這會導致錯誤消息: FooThing不滿足H ...

`friend struct std::is_invocable` 不能訪問它是朋友的類的私有成員

[英]`friend struct std::is_invocable` can't access private members of class it is friend to

我已使struct std::is_invocable成為class D的friend ,但它無法訪問D的私有成員。 這發生在 gcc、clang 和 MS Visual Studio 2017 中,因此它不是 MSVC 的怪癖之一。 錯誤是: C2248“'D::sinx':無法訪問在 ...

類和不可訪問的成員

[英]Classes and inaccessible members

我很難理解如何修復此代碼,我收到錯誤消息,指出 Point::x 和 Point::y 都無法訪問。 我該如何解決? ...

重構:在子函數中委托友誼

[英]Refactoring : delegate friendship in sub-functions

我重構了一個代碼,其中 class 有一個朋友 function 做了很多事情。 我想將do_something的內容拆分成幾個小函數。 看起來像這樣的東西: 有沒有一種設計可以將友誼轉移到子功能do_x(Foo&amp;)而不必在 class 或類似的東西中聲明它們來拆分代碼? 注:僅限C++11 ...

如何制作一個 function 是 2 班的朋友

[英]How to make a function that is a friend of 2 classes

這是我正在做的事情的一個非常簡化的版本,但明白了要點。 我有 2 個可用於算術的類。 我的問題是我希望能夠將 2 相乘,但無論如何我嘗試這似乎會導致問題。 例如: 我怎樣才能解決這個看似遞歸的錯誤? 如果不是因為 B 值總是排在第二位,我會把A operator* (const A &amp;a); ...

如何授予朋友class訪問修改成員的值

[英]How to grant friend class access to value of modified member

授予 class 訪問不同 class 的私有成員的修改值的正確方法是什么。 使用 Friend Class 允許我訪問私有成員的值(如果提供)但不允許我訪問該成員的修改后的值數據。 例如,當我在一個 Class 中構建向量時,我想在另一個 class 中構建該向量的數據。 如何授予訪問權限 具有相 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM