在读取之前,局部变量`sp`在所有路径中被重新分配

时间:2017-07-30 09:02:21

标签: c++ resharper

这条警告消息是什么,“在读取之前,所有路径中都会重新分配局部变量sp”。可能出现什么问题?

SerialPort sp("/dev/netlink6", B115200, loop);

sp.onRead = [&sim](std::string msg) {
    for (auto c: msg) {
        sim.process(c);
    }
};

1 个答案:

答案 0 :(得分:0)

该消息可能暗示可以将声明和赋值连接起来

int main()
{
    int i = 0; // ReSharper: Local variable 'i' is reassigned in all paths before being read.
    i = 5;
}

显然可以是int i = 5

无法通过简短的代码段说出导致您遇到此情况的原因。如果在构造函数中设置了成员onRead,则不应引起ReSharper的消息:

class A
{
public:
    int i;
    A(const int i) : i(i) {}
};

int main()
{
    A a(0);
    a.i = 5; // No message regarding reassignment.
}