cost 125 ms
CRTP、容器和指針的問題

[英]A problem with CRTP, containers and pointers

我有這個CRTP基地 class : 現在,一個數組,試圖成為該容器的孩子: 這是用法: 結果: 好吧,我剛拿到 UB! 可以肯定的是,我誤解了一些事情,但我無法理解我在寫什么和做錯了什么。 我希望能夠將Container用作類型定義、函數參數中的接口類型......沒有動態多態性的典型地方,只需使 ...

使用 CRTP 調用靜態 constexpr 函數時出現未定義函數錯誤

[英]Undefined function error when calling a static constexpr function with CRTP

我試圖了解此示例中我的 CRTP 實現出現編譯錯誤的原因: 具體為什么 (A) 可以,而 (B) 給我這個錯誤: 將 (B) 替換為return impl_func() + 4編譯成功。 但是Derived::func()和Default<Derived>::func()都不起作用。 如 ...

C++ 中的 CRTP 是一種表達其他語言中特征和/或 ADT 的方法嗎?

[英]Is CRTP in C++ a way to express what in other languages are traits and/or ADT?

所以,我正在努力掌握 C++ 中的整個 CRTP。 我在網上找到的一些(1) (2)基本原理關於您為什么要關心使用它是因為它允許以半自動方式向您的代碼添加功能。 我的意思是我可以讓編譯器為我推斷出一些功能,只要求我提供一些小的實現。 例如,我可能想形式化Comparable “特征”(使用 Rus ...

Concept-ed 與 CRTP 靜態/編譯時多態性 - 使用基本 class 方法和來自派生 class 的變量

[英]Concept-ed vs CRTP static/compile-time polymorphism - using base class methods and variables from derived class

我一直在學習 c++20 概念作為 static 多態性 CRTP 模板設計的替代方案(對於那些不知道我在說什么的人,這里有一個很好的資源: https://www.fluentcpp.com /2020/09/11/replacing-crtp-static-polymorphism-with-c ...

如何從基 class 繼承使用聲明

[英]How to inherit using declarations from base class

我在 class Config中聲明類型,將其傳遞給 class Parent基類,以便Child可以訪問。 這個想法是每個Child (有很多)不必繼續聲明它自己的using聲明,因為它們已經在Parent中。 但是,這不會編譯。 Child看不到Parent::Type 。 有可能以某種方式實 ...

模板化 class 中的成員變量

[英]Template a member variable in a class

我正在對一些較舊/雜亂的代碼進行一些重構。 我正在嘗試一點一點地改進。 因為它適合這個項目,我開始在一些 class 上實現 CRTP(對於 static 多態性),我們稱之為sensor 。 通過 CRTP,現在有一個real和一個fake的實現。 現在,我正在嘗試將模板放入使用sensor的 c ...

對於具有所有公共 static 方法的類,如何避免 CRTP“錯誤:不完整類型的無效使用”?

[英]how to avoid CRTP "error: invalid use of incomplete type" for classes with all public static methods?

目標是幾個范圍內的枚舉(每個枚舉在它自己的結構/類/命名空間中)和一些相關的實用函數。 我已經多次使用該模式,並且實用程序函數總是包含一個 toString() 和 fromString() function 用於人類可理解的輸入/輸出。 但是,這次我有幾種不同類型的維度:長度、時間、角度……我想 ...

在基類'Destructor中調用派生類'(非虛)function

[英]Call a derived class' (non-virtual) function in the base class' Destructor

假設我們有以下 class 模板:template<typename T> class Object { public: Object() = default; Object(const Object&) = delete; Object(Object& ...

2022-09-05 06:35:10   4   102    c++ / crtp  
減少 C++ 中不必要的運算符重載

[英]reduce unnecessary operator overloading in C++

在我重載< , == , + , - , * ... 在名為Fraction的 class 中: 我可以使用上面的這些“基本”運算符來重載> , += , ++和+從左... 但是,我也有像RealNumber , Complex ... 他們也需要重載,但只有重載< , == , ...

如何處理相同方法的多個 inheritance 或 CRTP static 多態性的鑽石問題?

[英]How to handle multiple inheritance of same methods or diamond problem with CRTP static polymorphism?

我想用 CRTP 靜態實現多態性。 我想創建幾個提供功能的基類。 然而,功能可以重疊。 但是,如果它們重疊,它們是相同的。 假設我有 Boxer和Chess Player都提供walk 。 walk的兩個定義是相同的。 順便說一句,我可以(並且可能我應該)重寫上面的代碼以避免重復walk的代碼 ...

有沒有辦法通過刪除“vptr”來減小 object 的大小

[英]Is there a way to decrease the size of the object by removing "vptr"

我有一個使用 CRTP 和 C++20 的代碼: 有沒有辦法刪除“vptr”,所以 object 不會占用 8 個字節(對於 x64),而只會占用 1 個字節? (因為它從未與運行時多態一起使用) 在實際代碼中,層次結構要復雜得多,它具有事件 2 vptr(因此需要 16 個字節)。 是否有類似 ...

創建涉及不完整類型成員的“使用”聲明的最佳方法是什么?

[英]What is the best way to create a 'using' declaration involving members of incomplete types?

我有一個非常簡單的 CRTP 骨架結構,它在基類中只包含一個向量和一個私有訪問器。 CRTP 類中有一個輔助方法可以訪問它。 到目前為止,一切都很好。 現在我想向CRTPType添加一個using聲明,這將是_v()返回的類型。 因此,理想情況下,可以執行以下操作: 問題是類型不完整,所以 ...

2022-06-10 21:05:37   1   110    c++ / c++14 / crtp  
CRTP 和不完整類型

[英]CRTP and Incomplete Types

我想簡要說明一下完整類型與 CRTP 的關系。 我認為這個問題有點相關。 但是,我的問題與 CRTP 有關,其中派生類成員函數顯式調用基類成員函數,而基類成員函數又調用派生函數。 這似乎與在主例程中調用派生類型的基類函數不同。 我還閱讀了這個問題,其中解釋了使用派生類的基類的static cons ...

基地 singleton class 與重置選項

[英]Base singleton class with reset option

我正在嘗試在用戶不持有實例的單線程環境中使用 CRTP 實現基礎 class singleton,代碼如下: 我可以使用 class 作為伙伴: Q1 。 請問這樣可以嗎? (請參閱上面的限制。我知道這在多線程環境中不起作用,並且如果實例被持有)。 Q2 。 這樣做時出現錯誤: 請你幫助我好嗎 ...

非共享方法的虛擬 function

[英]Virtual function with non-shared method

我正在進行個人項目,我需要做一些不尋常的事情。 我的代碼有點長,但問題出在結構上,所以我將使用該問題的一個非常簡化的版本。 我有兩個類(A 和 B),B 派生自 A。 B 使用 A 的所有屬性和方法,包括創建 class 實例的修改克隆的方法。 問題是我需要能夠在克隆后使用 A 中不存在的 B ...

CRTP 基礎私有構造函數和派生友元 class 使用 C++17 和統一初始化導致編譯錯誤

[英]CRTP base private constructor and derived friend class cause compilation error using C++17 and uniform initialization

我有以下代碼: 出於某種原因,當使用 C++17 時,編譯因“x”變量的“不可編譯”初始化而失敗。 編譯器說: Base::Base() [with T = Derived]' 在此上下文中是私有的但如您所見,下面我創建了一個相同類型的 object,但這次我沒有使用統一初始化。 x1 變量可以 ...

使用 CRTP class 的 std::make_pair 調用中的奇怪行為

[英]Strange behavior in std::make_pair call with CRTP class

問題我有一個簡單的 CRTP 模式 class BaseInterface和兩個派生自這個 class 的類: test_dint和test_dint2 。 test_dint和test_dint2之間的區別 - 在test_dint dtor 中明確聲明為~test_dint() = defau ...

2022-03-16 15:06:15   1   95    c++ / std / crtp  

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