簡體   English   中英

實現沒有作用域解析運算符的類?

[英]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;
}

但是...

您不必僅僅因為可以就做某事。

不建議使用預處理器宏來隱藏語言的重要構造。 在走這條路之前,這里有一些需要考慮的事情。

  1. 與在任何有用的程序中編寫其余代碼所花費的時間相比,編寫<ClassName>::花費的時間逐漸減少。

  2. 您花費在調試和維護程序上的時間將比編寫<ClassName>::花費的時間高得多。

  3. .cpp文件中有多個類時,如果對所有類采用相同的策略,則很難清楚地看到哪個函數對應於哪個類。

  4. 調試時,您會感到沮喪,因為您進入某個功能后將看不到完全限定的功能名稱。

  5. 清晰度的損失太昂貴了,要付出代價以換取在實現類的成員功能時節省一些按鍵的代價。

我說的是經驗。 我在一個項目名稱為INR_DynamicallyTypedLowFidelityLeafComponentRepresentation的項目中工作。 我不會使用預處理器宏來隱藏這么長的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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