前提・実現したいこと
c++でプログラムを書いてます。std::stringをもらうコンストラクタに文字列を渡す箇所でコンパイルエラーが発生してしまいます。
charな文字列をどうしたらstd::stringで渡せるでしょうか?
発生している問題・エラーメッセージ
In file included from BusinessAggregate.cpp:6:
Gloval.h:24:26: error: 'constexpr' needed for in-class initialization of static data member 'LogOperation* "
Gloval::LogOperationInstance' of non-integral type [-fpermissive] static LogOperation *LogOperationInstance = new LogOperation("Operation");
Gloval.h:24:77: error: temporary of non-literal type 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} in a constant expression
static LogOperation *LogOperationInstance = new LogOperation("Operation");
^
In file included from C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-
mingw32/8.1.0/include/c++/string:52,
from LogOperation.h:8,
from Gloval.h:1,
from BusinessAggregate.cpp:6:
C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/lib/gcc/x86_64-w64-
mingw32/8.1.0/include/c++/bits/basic_string.h:77:11: note: 'std::__cxx11::basic_string<char>' is not literal because:
class basic_string
該当のソースコード
c++
/////////////////////////////////////////////////// Gloval.h ////////////////////////////////////////////////
#include <string>
#include "LogOperation.h"
#include "LogError.h"
class Gloval
{
private:
public:
//コンストラクタ
Gloval();
//デストラクタ
~Gloval();
//運用ログ static LogOperation *LogOperationInstance = new LogOperation("Operation");
};
#endif
/////////////////////////////////////////////////// Log.h ////////////////////////////////////////////////
#ifndef LOGOPERATION
#define LOGOPERATION
#include <string>
#include "Base\Log.h"
class LogOperation : public Log
{
private:
public:
//コンストラクタ
LogOperation(std::string fileName) : Log(fileName){}
//集計結果データ出力 void writeAggegated(std::string message); //内訳データ出力 void writeBreakdown(std::string message);
};
#endif
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。