我正在嘗試使用模板化類構建一個庫,該類對傳遞的整數值有約束:
圖書館.h
template<int N>
requires (N == 1)
class example {
public:
example();
};
庫.cpp:
#include "library.h"
主檔案:
#include "library.h"
int main() {
return 0;
}
但是,在嘗試 compile 時main.cpp,編譯器向我拋出以下錯誤:
error: expected constructor, destructor, or type conversion before '(' token
我注意到如果我不包含library.h在 中main.ccp,構建會成功編譯,但我的 main.ccp 中沒有其他內容,我不確定發生了什么。
我感謝任何解決問題的幫助,因為如果我無法編譯,我將無法繼續處理此問題。
uj5u.com熱心網友回復:
正如查爾斯·薩瓦 (Charles Savoie) 在他的評論中所寫的那樣,該requires關鍵字是自 C 版本 20 以來的新關鍵字。
較舊的編譯器不知道該關鍵字;對于此類編譯器,requires它只是一個識別符號,例如exampleor helloWorld。
你可以嘗試更換requires的helloWorld,如果你的編譯器支持,以檢查requires:
template<int N>
helloWorld (N == 1)
class example {
public:
example();
};
當然,這在任何情況下都會導致一些錯誤資訊。
但是,如果您得到與現在完全相同的錯誤訊息,則您的編譯器很可能不支持該requires關鍵字。
當然,您可以嘗試獲得更新的編譯器。
但在這種情況下,您的庫可能只能由最新的編譯器使用,因此在撰寫使用您的庫的程式時,您還需要一個非常新的編譯器。
如果您希望您的庫與較新的編譯器兼容,則必須避免使用requires關鍵字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/399177.html
下一篇:具有帶默認值的指標引數的類模板
