QString Error
-
Hello,
What is wrong in this statement, it worked on another machine.
On my machine ( VMWare) flashing error.
QString settingsFile{"/neet/one.json"};
Error Message
/home/cpp/cap.h:108: error: function definition does not declare parameters
Answers Appreciated.
-
Hello,
This is not a Qt problem, your C++ syntax is wrong. Function arguments (constructors included) are surrounded by parenthesis, not with curly braces.Kind regards.
-
Thank you for replay, i changed to circle brackets
QString settingsFile("/neet/one.json");
still It flashing error again.
/home/cpp/cap.h:108: error: expected identifier before string constant /home/cpp/cap.h:108: error: expected ',' or '...' before string constant``` Thank You.
-
@marvic_39 said:
and you do have
#include <QString>
? -
@marvic_39 said:
and you do have
#include <QString>
? -
@marvic_39
can it be error from lines above it as#include <QString> QString settingsFile("/boot/settings.json");
surely compiles.
check if lines above has ; in the end
-
@marvic_39
can it be error from lines above it as#include <QString> QString settingsFile("/boot/settings.json");
surely compiles.
check if lines above has ; in the end
-
Ok, the statement is valid. Where is this located, in your header? It's not a good idea to declare variables in headers. Also, how do you compile (what environment/compiler) are you using?
-
Ok, the statement is valid. Where is this located, in your header? It's not a good idea to declare variables in headers. Also, how do you compile (what environment/compiler) are you using?
Where you declare variables?
-
Where you declare variables?
@marvic_39
Usually where you use them, in functions or blocks. If you have a global variable then it is declared in the .cpp file, thus you don't get the same symbol in multiple translation units (.o files resulting from compilation). It is safe to putextern
declarations in header files, because they do not amount to a variable, but are only information for the compiler (and linker).
This most certainly is a C++ problem. My suggestion is to read up a bit more on C++ to have a better grasp on where and for what memory is allocated. That being said, without a bit more of code and/or information on the problem you're facing I fear I wouldn't be of much help.Here are some resources you could use, if you wish:
http://www.learncpp.com/cpp-tutorial/13-a-first-look-at-variables-initialization-and-assignment/
http://www.learncpp.com/cpp-tutorial/41-blocks-compound-statements/
http://www.learncpp.com/cpp-tutorial/42-global-variables/
https://en.wikipedia.org/wiki/Call_stack -
@marvic_39
Usually where you use them, in functions or blocks. If you have a global variable then it is declared in the .cpp file, thus you don't get the same symbol in multiple translation units (.o files resulting from compilation). It is safe to putextern
declarations in header files, because they do not amount to a variable, but are only information for the compiler (and linker).
This most certainly is a C++ problem. My suggestion is to read up a bit more on C++ to have a better grasp on where and for what memory is allocated. That being said, without a bit more of code and/or information on the problem you're facing I fear I wouldn't be of much help.Here are some resources you could use, if you wish:
http://www.learncpp.com/cpp-tutorial/13-a-first-look-at-variables-initialization-and-assignment/
http://www.learncpp.com/cpp-tutorial/41-blocks-compound-statements/
http://www.learncpp.com/cpp-tutorial/42-global-variables/
https://en.wikipedia.org/wiki/Call_stackI am aware of C++, It looks good, If you provide a solution, how to solve this single statement. You do not need to be proficient.
-
I am aware of C++, It looks good, If you provide a solution, how to solve this single statement. You do not need to be proficient.
@marvic_39
Might be problem with GCC.Check your Gcc version . -
@marvic_39
Might be problem with GCC.Check your Gcc version . -
Hi, just guessing, but if that line is inside a class declaration (not outside) then you'll get that 108 error, for example:
class MyClass { ... QString settingsFile("/boot/settings.json"); ... };
you could try
class MyClass { ... QString settingsFile = "/boot/settings.json"; ... };
-
Hi, just guessing, but if that line is inside a class declaration (not outside) then you'll get that 108 error, for example:
class MyClass { ... QString settingsFile("/boot/settings.json"); ... };
you could try
class MyClass { ... QString settingsFile = "/boot/settings.json"; ... };
Yes, tried that statement too. Here it's flashing error.
QString settingsFile = "/neet/one.json";
/home/cpp/cap.h:109: sorry, unimplemented: non-static data member initializers /home/cpp/cap.h:109: error: in-class initialization of static data member 'str' of non-literal type
-
@hskoglund
What is your GCC version ? less than 4.7? -
@hskoglund
What is your GCC version ? less than 4.7? -
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
I cross compiled Linux, OpenCV, FFmpeg Qt Raspi and many other apps never faced a compiler problems.
Should this look like compiler version problem?
-
@marvic_39 said:
But Non static data member initializers available only for GCC >4.7 . Check this . Check the GCC support docs. -
@hskoglund
What is your GCC version ? less than 4.7?Installed, Still flashing errors.
gcc (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3
108 QString settingsFile("Hello"); 109 QString str="/neet/one.json";
/home/cpp/app.h:108: error: expected identifier before string constant /home/cpp/app.h:108: error: expected ',' or '...' before string constant /home//cpp/app.h:109: sorry, unimplemented: non-static data member initializers /home/cpp/app.h:109: error: in-class initialization of static data member 'str' of non-literal type
In QT creator it show this, is this correct.
Qt Creator 3.5.1 (opensource)
Based on Qt 5.5.1 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 32 bit)Built on Oct 13 2015 07:38:32