expected identifier before string constant

c++, constructor, linux

Solution

You can not initialize `tst_` where you declare it. This can only be done for `static const` primitive types. Instead you will need to have a constructor for `class test1`.

EDIT: below, you will see a working example I did in ideone.com. Note a few changes I did. First, it is better to have the constructor of `test` take a `const` reference to `string` to avoid copying. Second, if the program succeeds you should `return 0` not `1` (with `return 1` you get a runtime error in ideone).

#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;
}

Problem

Having a program like this: ``` #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; } ``` …why am I getting the following when I execute g++ main.cpp ``` main.cpp:16:12: error: expected identifier before string constant main.cpp:16:12: error: expected ‘,’ or ‘...’ before string constant ```

Original source

Related problems