[英]Implement class without scope resolution operator?
如果我在頭文件中聲明我的類,沒有所有那些煩人的作用域解析運算符,有沒有辦法實現該類? 我不喜歡為每個成員重寫類名。 我想我以前曾經嘗試過這樣做:
在啊
#if !defined(a_h)
#define a_h
class A {
int function (int);
int foo (void);
};
#endif
在A.cpp中
#include "A.h"
class A {
int function (int number) {
return 2* number;
}
int foo (void){
return 2;
}
}
但出現了一些錯誤(很遺憾,現在無法對其進行測試)。
您可以使用預處理器宏來簡化操作。
#include "A.h"
#ifdef _
#undef _
#endif
#define _(fun) A::fun
int _(function)(int number)
{
return 2* number;
}
int _(foo)(void)
{
return 2;
}
但是...
您不必僅僅因為可以就做某事。
不建議使用預處理器宏來隱藏語言的重要構造。 在走這條路之前,這里有一些需要考慮的事情。
與在任何有用的程序中編寫其余代碼所花費的時間相比,編寫<ClassName>::
花費的時間逐漸減少。
您花費在調試和維護程序上的時間將比編寫<ClassName>::
花費的時間高得多。
當.cpp
文件中有多個類時,如果對所有類采用相同的策略,則很難清楚地看到哪個函數對應於哪個類。
調試時,您會感到沮喪,因為您進入某個功能后將看不到完全限定的功能名稱。
清晰度的損失太昂貴了,要付出代價以換取在實現類的成員功能時節省一些按鍵的代價。
我說的是經驗。 我在一個項目名稱為INR_DynamicallyTypedLowFidelityLeafComponentRepresentation
的項目中工作。 我不會使用預處理器宏來隱藏這么長的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.