我知道我們可以通過物體如調用類的功能,在主
object.Function1(object);
但調用類的功能主要有調用諸如以下功能的任何方式
Function1(object);
我不得不寫這將有一個主要功能如下
int main() {
Line line1(10);
Line line2 = line1;
display(line1);
display(line2);
return 0;
}
我知道我們可以通過物體如調用類的功能,在主
object.Function1(object);
但調用類的功能主要有調用諸如以下功能的任何方式
Function1(object);
我不得不寫這將有一個主要功能如下
int main() {
Line line1(10);
Line line2 = line1;
display(line1);
display(line2);
return 0;
}
我不知道W¯¯運行代碼的類HY你需要它,但你可以創建免費功能「顯示」調用方法顯示:
void display(Line& line)
{
line.display();
}
int main() {
Line line1(10);
Line line2 = line1;
display(line1);
display(line2);
return 0;
}
在補充桑德羅的簡單而有效的建議,這裏更通用的一個,有人在評論中提到。
您可以使用mem_fn()
(或如果在C++ 11之前使用較舊的C++編譯器,則爲mem_fun_ref()
)創建與該成員函數對應的函數對象。
的好處是,你不必擔心返回類型和參數:
class C {
public:
void x() { cout << "Yes x!"<<endl; }
void y(int a) { cout << "Yes y"<<a<<"!"<<endl; }
};
int main() {
C c;
c.x();
c.y(3);
auto x = mem_fn(&C::x); // function object
auto y = mem_fn(&C::y);
x(c); // call them like a function
y(c,4);
return 0;
}
不便之處在於這種輕鬆是有代價的:與桑德羅的做法,安:我對於不同的類,不會有相同函數名稱的重載。
'std :: mem_fn'是答案,或者是lambda –
使該方法成爲「靜態」方法。 –
@Thomas Matthews如果我使靜態方法,我必須使用類名來調用方法 –