c++ - Error with const string member : no appropriate default constructor available -


i getting no appropriate default constructor available error following simple piece of code:

    class {     public:         const string cs ;  };  void main() {     a;     return; } 

if remove const string code compiles fine. can not understand why default constructor not getting created compiler? , deal const string member variable? working on vs2008.

as mentioned in comments, const variables cannot left unitialized in c++. there 2 ways can initialize variable. in both cases, content of string can never modified (as const means).

one: in class declaration. method useful if want string have same value across of objects. inflexible , if find using should declare variable static.

class {     const string cs = "value of cs"; }; 

alternatively, assign in constructor, using special syntax const member initialization. more flexible , idiomatic.

class {      const string cs;   public:       a() : cs("value of cs")       {       }   }; 

note can used arguments, eg

a(string s) : cs(s) //initializes cs value of s 

your error arises compiler trying find second option.


Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -