2015-09-23 3 views
0

Я прочитал много вопросов по этому вопросу, но ни один из них, похоже, не решил мою проблему. Код ниже:«DemoProject :: Logger»: переопределение типа «класс»

Logger.cpp

#include "Includes.h" 

namespace DemoProject { 
    class Logger { 
    public: 
     static void Logger::printm(CEGUI::String Message) { 
      std::cout << currentDateTime() << " >> " << Message << std::endl; 
     } 

    private: 
     static const std::string currentDateTime() { 
      time_t  now = time(0); 
      struct tm tstruct; 
      char  buf[80]; 
      tstruct = *localtime(&now); 
      strftime(buf, sizeof(buf), "%d-%m-%Y %X", &tstruct); 

      return buf; 
     } 
    }; 
} 

logger.h

#ifndef LOGGER_H 
#define LOGGER_H 
#pragma once 

#include "Includes.h" 

namespace DemoProject { 
    class Logger { 
    public: 
     static void Logger::printm(CEGUI::String Message); 
    }; 
} 

#endif 

Includes.h

#ifndef INCLUDES_H 
#define INCLUDES_H 

#include <iostream> 
#include <string> 
#include <stdio.h> 
#include <time.h> 

#include <CEGUI/CEGUI.h> 
#include <CEGUI/RendererModules/OpenGL/GLRenderer.h> 

#include <SDL.h> 
#include <SDL_opengl.h> 

#include "Logger.h" 

#endif 

Извините за плохое форматирование поста, но это лучшее, что я мог сделать. Я в основном разработчик C#, но я пытаюсь изучить C++, выполняя различные упражнения, которые я создаю самостоятельно. Из представления разработчиков C# этот код в порядке, но я не знаю, я все еще новичок.

ответ

1

Есть несколько вещей, которые вы делаете странно. Но самое главное - вам не нужно снова объявлять класс в файле .cpp. Вы просто реализовать функции:

namespace DemoProject { 

    void Logger::printm(CEGUI::String Message) { 
     std::cout << currentDateTime() << " >> " << Message << std::endl; 
    } 

    static const std::string currentDateTime() { 
     ... 
    } 

} 

Вы также не объявляли currentDateTime в заголовке, так что не будет компилироваться правильно. Вам также не нужно обладать классом в декларации, так как вы уже в классе, поэтому ваш заголовок должен выглядеть так:

namespace DemoProject { 
    class Logger { 
    public: 
     static void printm(CEGUI::String Message); 
     static const std::string currentDateTime(); 
    }; 
} 
+0

Это решило мою проблему, но у меня есть еще одна, которую я не могу даже поймите. Спасибо, однако, за то, что помогли мне в этом вопросе @pinkboi – TheNeosrb