我对c++还很陌生,我尝试过创建一个日志类,但遇到了多个错误,不知道如何修复.我试着看教程,但是



错误消息,如: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;
}

相关内容

  • 没有找到相关文章

最新更新