13

Can I do this in C++ (if yes, what is the syntax?):

void func(string* strs) {
    // do something
}
func({"abc", "cde"});

I want to pass an array to a function, without instantiating it as a variable.

0

4 Answers 4

13

It can't be done in the current C++, as defined by C++03.

The feature you are looking for is called "compound literals". It is present in C language, as defined by C99 (with C-specific capabilities, of course), but not in C++.

A similar feature is planned for C++ as well, but it is not there yet.

Sign up to request clarification or add additional context in comments.

1 Comment

What about C++11?
0

I don't think you can do that in C++98, but you can with initializer_lists in C++1x.

2 Comments

I love initializer_lists so much.
Your linked example uses std::vector. How can you do the same for arrays?
0

Use a variadic function to pass in unlimited untyped information into a function. Then do whatever you want with the passed in data, such as stuffing it into an internal array.

variadic function

Comments

0

As written, you can't do this. The function expects a pointer-to-string. Even if you were able to pass an array as a literal, the function call would generate errors because literals are considered constant (thus, the array of literals would be of type const string*, not string* as the function expects).

1 Comment

If I don't instantiate a variable, it still has a pointer (address).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.