11

C ++ error: an initializer expected before [function name]

 3 years ago
source link: https://www.codesd.com/item/c-error-an-initializer-expected-before-function-name.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

C ++ error: an initializer expected before [function name]

advertisements

I am refreshing my self on C++ (have not did it since school) and I wrote a simple program just to mess around. My problem is when I compile the program it chokes stating "error: expected initializer before 'stringThing'" is there a reason why this is doing this? I know this may be a noob question so I checked stackoverflow and could not find any relevant questions that gave me a answer.

*I am using GNU GCC compiler

Code:

#include <iostream>

using namespace std;

void string stringThing (string shiftdir, string &teststring)
    {
        if (shiftdir == "right")
        {
           teststring = teststring >> " " >> "Bit Shifted right";
        }
        else
        {
           teststring = teststring << " " << "Bit Shifted left";
        }
    }
int main()
{

    string test;

    cout << stringThing("right", "I have done a ") << endl;

    return 0;
}


The return type for stringThing must be either void or string, not both. You also must include <string>, if you want to use string.

Since you want to output the return value of stringThing() in main, I guess it should be

std::string stringThing (std::string shiftdir, const std::string &teststring)

But then, you must also return a string from your function

if (shiftdir == "right")
    return teststring + " " + "Bit Shifted right";
else
    return teststring + " " + "Bit Shifted left";

for example.

Your parameter std::string &teststring won't work with your const char* argument. So either declare it as a copy by value string only, or better const string&.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK