1. ホーム
  2. c++

[解決済み] 文字列定数の前に期待される識別子

2022-02-25 10:02:39

質問

このようなプログラムがあります。

#include <iostream>
#include <string>
using namespace std;
class test
{
public:
    test(std::string s):str(s){};
private:
    std::string str;
};

class test1
{
public:
    test tst_("Hi");
};

int main()
{
    return 1;
}

...なぜか、以下のように実行されます。

g++ main.cpp

main.cpp:16:12: error: expected identifier before string constant
main.cpp:16:12: error: expected ‘,’ or ‘...’ before string constant

解決方法は?

を初期化することはできません。 tst_ を宣言しているところです。これは static const プリミティブ型です。のコンストラクタを用意する必要があります。 class test1 .

EDIT: 以下に、私が行った作業例を示します。 アイディオーネ・ドットコム . 私が行ったいくつかの変更に注意してください。まず、コンストラクタに test を取る。 const を参照してください。 string を使用してコピーしないようにします。次に、もしプログラムが成功したら return 0 ではなく 1 (を使用)。 return 1 でランタイムエラーが発生します。 イデオン ).

#include <iostream>
#include <string>
using namespace std;
class test
{
public:
    test(const std::string& s):str(s){};
private:
    std::string str;
};
 
class test1
{
public:
    test1() : tst_("Hi") {}
    test tst_;
};
 
int main()
{
    return 0;
}