我正在尝试在我的程序(*nix 机器 - Ubuntu 12.10,Codeblocks)中使用 log4cpp 在程序的不同实例中创建日志。
LoggerMain.h
#include "log4cpp/Category.hh"
#include "log4cpp/Appender.hh"
#include "log4cpp/FileAppender.hh"
#include "log4cpp/OstreamAppender.hh"
#include "log4cpp/Layout.hh"
#include "log4cpp/BasicLayout.hh"
#include "log4cpp/Priority.hh"
主程序.h
#include "LoggerMain.h"
MainProgram{
public:
log4cpp::Appender *appender;
};
主程序.cpp
appender = new log4cpp::FileAppender("default","program.log"); //getting error here
appender->setLayout(new log4cpp::BasicLayout());
log4cpp::Category& root = log4cpp::Category::getRoot();
main{
//will use root here for loggin
}
错误: src/MainProgram.cpp|21|错误:“class MainProgram”中的“appender”没有命名类型|
怎么了?我基本上在做与 log4cpp 简单示例文档中相同的事情 here
最佳答案
函数外不能有操作,把下面代码放到MainProgram构造中,
MainProgram::MainProgram(){
appender = new log4cpp::FileAppender("default","program.log"); //getting error here
appender->setLayout(new log4cpp::BasicLayout());
log4cpp::Category& root = log4cpp::Category::getRoot();
}
你可以为 MainProgram 使用单例模式
MainProgram{
public:
MainProgram* instance(){
if (!instance){
instance = new MainProgram();
return instance;
}
}
MainProgram()
{
appender = new new log4cpp::FileAppender("default","program.log"); //getting error here
appender->setLayout(new log4cpp::BasicLayout());
}
private:
log4cpp::Appender *appender;
MainProgram* instance;
};
int main(int argc, char* argv[])
{
MainProgram::Instance();
}
注意,C++支持两种形式的main函数,你需要将main函数改为以下形式之一:
int main() { /* ... */ }
和
int main(int argc, char* argv[]) { /* ... */ }
关于c++ - 此类中的变量未命名类型 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030359/