我希望能够从该类的对象中以多个名称调用相同的成员函数。
例如:
这段代码在我的环境下(gcc 7.3.0)出现了错误。
例如:
#include <string>
#include <stdio.h>
class Log
{
public:
Log(std::string str)
: log(str)
{}
void print() const
{
puts(log.c_str());
}
const auto& output = print; // attempting to alias. does not work
private:
std::string log;
};
int main()
{
Log log("LOG: Log started.");
log.print();
log.output(); // both should call the same function.
return 0;
}
这段代码在我的环境下(gcc 7.3.0)出现了错误。
main.cpp:15:15: error: non-static data member declared with placeholder ‘const auto’
const auto& output = print; // attempting to alias. does not work
^~~~
main.cpp: In function ‘int main()’:
main.cpp:25:13: error: ‘class Log’ has no member named ‘output’
log.output(); // both should call the same function.
如何为函数名称定义别名?
print
的签名发生变化,我将不得不调整该函数。 - stimulateprint
签名更改时保留:template <typename ... TT> auto output(TT&& ... tt) { return print(std::forward(tt)...); }
- 它包含了您想要的所有技巧,但我不认为这是“最佳实践”... - Aconcaguathis
)还是c-ellipsis用法(如printf
)。 - Jarod42