Variable number of arguments in C++?

后端 未结 17 2054
-上瘾入骨i
-上瘾入骨i 2020-11-21 23:13

How can I write a function that accepts a variable number of arguments? Is this possible, how?

17条回答
  •  清歌不尽
    2020-11-21 23:47

    Using variadic templates, example to reproduce console.log as seen in JavaScript:

    Console console;
    console.log("bunch", "of", "arguments");
    console.warn("or some numbers:", 1, 2, 3);
    console.error("just a prank", "bro");
    

    Filename e.g. js_console.h:

    #include 
    #include 
    
    class Console {
    protected:
        template 
        void log_argument(T t) {
            std::cout << t << " ";
        }
    public:
        template 
        void log(Args&&... args) {
            int dummy[] = { 0, ((void) log_argument(std::forward(args)),0)... };
            cout << endl;
        }
    
        template 
        void warn(Args&&... args) {
            cout << "WARNING: ";
            int dummy[] = { 0, ((void) log_argument(std::forward(args)),0)... };
            cout << endl;
        }
    
        template 
        void error(Args&&... args) {
            cout << "ERROR: ";
            int dummy[] = { 0, ((void) log_argument(std::forward(args)),0)... };
            cout << endl;
        }
    };
    

提交回复
热议问题