文字列定数の前に識別子が必要です 質問する

文字列定数の前に識別子が必要です 質問する

次のようなプログラムがあります:

#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++ メイン.cpp

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

ベストアンサー1

tst_宣言した場所で初期化することはできません。これはstatic constプリミティブ型に対してのみ実行できます。代わりに、 のコンストラクターが必要になりますclass test1

編集:以下に私が行った動作例を示します。ideone.com私が行ったいくつかの変更に注意してください。まず、コピーを避けるために、のコンストラクタに への参照testを持たせる方が良いです。次に、プログラムが成功した場合、(conststringreturn 01return 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;
}

おすすめ記事