错误消息,如:m_LogLevel变量的未定义标识符需要第40-46行的标识符。
我试过在没有句号的情况下使用日志函数。我只是在复习中没有更多的想法——我在日志中没有看到任何问题。
#include <iostream>
class Log {
private:
const int LogLevelWarning = 1;
const int LogLevelError = 0;
const int LogLevelInfo = 2;
private:
int Loglevel = LogLevelInfo;
public:
void SetLevel(int level) {
int m_Loglevel;
}
void Info(const char* message) {
if (m_LogLevel >= LogLevelInfo) {
std::cout << "[Info]" << message << "n";
}
}
void Warn(const char* message) {
if (m_LogLevel >= LogLevelWarning) {
std::cout << "[WARNING]" << message << "n";
}
}
void Error(const char* message) {
if (m_LogLevel >= Lo
gLevelError) {
std::cout << "[Errror]" << message << "n";
}
}
};
int main() {
Log log;
Log.SetLevel(Log.LogLevelWarning);
Log.Warn("Hello!");
Log.Info("Hey!")
Log.Error("Hi!")
}
void SetLevel(int level) {
int m_Loglevel;
}
m_Loglevel的作用域仅限于SetLevel函数。它在其他任何地方都看不见。您可以在这里阅读更多关于作用域的信息C++作用域
而且您只是在声明它时没有初始化。它只包含垃圾值
您应该将"LogLevel"设置为作为参数传递的"level"。像这样:
void SetLevel(int level) {
LogLevel = level;
}
当然,在其他函数中,也可以将"m_LogLevel"替换为"LogLevel">
重写代码:代替
private:
int Loglevel = LogLevelInfo;
public:
void SetLevel(int level) {
int m_Loglevel;
}
写如下:
private:
int m_Loglevel = LogLevelInfo;
public:
void SetLevel(int level) {
m_Loglevel = level;
}