C ++为什么会“注意:请参阅对正在编译的类模板实例化的引用”

时间:2018-10-18 10:41:33

标签: c++ c++11 templates gcc

在.hpp文件中,我有一个属于类成员的模板函数。

class BLog
{
  public:
    enum { LOG_ERROR, LOG_WARN, LOG_STATUS, LOG_INFO, LOG_NOTICE, LOG_DEBUG };

    template <typename... Args>
    void appLog(int prio, const char *fmt, Args const &... args);
    template <typename... Args>
    void appLogError(const char *fmt, Args const &... args) { this->appLog(LOG_ERROR, fmt, args...);  } 
}

致电时,

int main() 
{
    BLog myLog();

    myLog.appLog(BLog::LOG_ERROR, "%s message", "Test");
}

我收到警告

  

注意:请参见对函数模板实例化的引用'void   myLog :: appLog(int,const char *,const char(&)[5])'被   编译

无法找出传递参数的正确语法...

希望有人可以提供帮助。谢谢。

Rem :有了建议的答案,使用Visual Studio,我总是收到带有W4标志的警告。

1 个答案:

答案 0 :(得分:2)

  1. it('renders without crashing', async () => { const mocks = [ { request: { query: TODOS_QUERY, }, result: { data: { todos: [ { title: 'An old todo', }, ], }, }, }, { request: { query: ADD_TODO_MUTATION, variables: { title: 'My new todo', }, }, result: { data: { addTodo: null, }, }, }, ]; const wrapper = mount( <MockedProvider mocks={mocks} addTypename={false}> <Component /> </MockedProvider> ); await wait(100); wrapper.update(); console.log(wrapper.debug()) expect(wrapper.contains('An old todo')).toBe(true); expect(wrapper.contains('My new todo')).toBe(false); wrapper.find('button').simulate('click'); await wait(100); wrapper.update(); console.log(wrapper.debug()) expect(wrapper.contains('An old todo')).toBe(true); expect(wrapper.contains('My new todo')).toBe(true); }); 是一个函数声明。使用BLog myLog();

  2. BLog myLog{};应该是myLog::LOG_ERROR