[英]Standard way of shortening C++ function signatures
模板總是變得很漫長,當我有一定的載體和模板包含的對象,並最終看起來就像一堆> > > > > > >
幾乎沒有幫助辨別界限有時,像這樣:
std::vector< std::pair< std::string, std::set< std::string > > >
有沒有一種標准的方法來縮短長度,或使項目易於區分? 我的實際代碼是這個類聲明。
我試過縮短函數名稱並輸入定義返回值。
class Event_Maker
{
public:
virtual ~Event_Maker() {};
// this one *this juts out really far v
virtual std::vector< std::unique_ptr< Event > > transfer_events( void ) = 0;
};
有沒有一種標准的方法來縮短長度,或使項目易於區分?
使用typedef
鍵入別名可能很方便,例如:
typedef std::unique_ptr<Event> EventPtr;
typedef std::vector<EventPtr> EventVector;
virtual EventVector transfer_events( void ) = 0;
順便說一句,你只需要>>
之間的空格,你不需要在<
或之前>
:
std::vector<std::pair<std::string, std::set<std::string> > >
UPDATE
正如@ Snowhawk04和@ mkrieger1在評論中指出的那樣,使用現代編譯器,你不再需要>>
之間的空間。 只需確保使用正確的編譯器標志,例如-std=c++0x
with g++
。 查看有關>>
和模板別名的更多信息。
作為一個額外的答案,在C ++ 11中你可以使用using
而不是typedef
,兩者都完成同樣的事情:
//typedef pair<string, set<string>> pairStrSetStr;
using pairStrSetStr = pair<string, set<string>>;
vector<pairStrSetStr> vec;
您也可以創建一個在返回類型后中斷的新行。 這就是像Clang-Format這樣的格式化工具。
struct EventMaker {
virtual ~EventMaker() {};
virtual std::vector<std::unique_ptr<Event>>
transfer_events() = 0;
};
C ++ 11還引入了Trailing-Return-Type 。 有些人發誓在其預定用途之外討厭它。
struct EventMaker {
virtual ~EventMaker() {};
virtual auto transfer_events()
-> std::vector<std::unique_ptr<Event>> = 0;
};
不幸的是,我們不能在虛函數上使用C ++ 14的自動返回類型扣除 ,因為返回類型是它與派生類的契約的一部分。
除非你打算編寫多語言代碼(即extern "C"{};
),否則你可以在不帶參數的函數上省略void
參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.