调用函数
请原谅,这一定是有史以来问过的最愚蠢的问题之一,尤其是因为我已经调用了一个函数。我调用了一个具有一个返回值的函数,并将该返回值设置为等于一个变量,但使用另一个返回 2 个变量的函数;我只想运行该函数并返回值。
我的声明:
string diagraph ( string mono1, string mono2);
调用函数:
cout << diagraph (mono1,mono2);
函数本身:
string diagraph(string mono1, string mono2) {
string encoded1,encoded2;
int a,b,c,d,e,f;
a = 0;
b = 0;
while( mono1 != cipherarray[b][c]){
b++;
if (b == 5) {
a = 0;
b++;
}
}
a = c;
b = d;
a = 0;
b = 0;
while (mono2 != cipherarray[b][c]){
b++;
if (b == 5) {
a = 0;
b++;
}
}
a = e;
b = f;
}
错误(与调用函数有关):
C++\expected constructor, destructor, or type conversion before '<<' token
expected `,' or `;' before '<<' token
函数尚未完成,但它将返回 2 个字符串
Pardon me, this must be one of the silliest questions ever asked especially since I've already called one function. I have called one function with one return value and set that return value equal to a variable but with another function that returns 2 variables; I just want to run the function and return the values.
my declaration:
string diagraph ( string mono1, string mono2);
calling the function:
cout << diagraph (mono1,mono2);
The function itself:
string diagraph(string mono1, string mono2) {
string encoded1,encoded2;
int a,b,c,d,e,f;
a = 0;
b = 0;
while( mono1 != cipherarray[b][c]){
b++;
if (b == 5) {
a = 0;
b++;
}
}
a = c;
b = d;
a = 0;
b = 0;
while (mono2 != cipherarray[b][c]){
b++;
if (b == 5) {
a = 0;
b++;
}
}
a = e;
b = f;
}
The errors(having to do with calling the function):
C++\expected constructor, destructor, or type conversion before '<<' token
expected `,' or `;' before '<<' token
the function is not finished but it will return 2 strings
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
检查上面的代码行
cout << diagraph (mono1,mono2);
以确保您没有遗漏尾随分号,或留下括号。Check the line of code above
cout << diagraph (mono1,mono2);
to make sure you haven't missed a trailing semicolon, or left a parenthesis open.首先,我在该函数中没有看到任何 return 语句。其次,函数不能返回两个值。您可以返回单个字符串(正如您的函数定义所示),也可以修改传入的值(只要它们是引用或指针)。
编辑:详细说明
如果您想修改传入的值,它们将需要是引用或指针。这是因为 C++ 中的默认行为是按值传递参数(复制),因此对函数参数的任何更改从函数外部都是不可见的。但是,如果参数是引用/指针,您可以改变它们已经指向的内容(或者如果您想更改原始指针指向的内容,则可以改变指向指针的指针,即不是突变,而是对新值/对象的赋值) 。
First off, I don't see a single return statement in that function. Second, you can't return two values from a function. You can either return a single string (as your function definition says it will) or you can modify passed in values (as long as they are references or pointers).
EDIT: To elaborate
If you want to modify passed in values they will need to be references or pointers. This is because the default behavior in C++ is to pass arguments by value (copy), so any change to the functions parameters will not be visible from outside of the function. However, if the arguments are references/pointers you can mutate what they already point to (or pointers to pointers if you want to change what the original pointer points to, i.e., not a mutation, but an assignment to a new value/object).
尝试编译并运行代码只会给我一个关于非 void 语句结束的警告。
我建议至少添加一个占位符返回值,直到函数完成,例如
return "";
。Attempting to compile and run your code only gives me a warning about end of a non-void statement.
I recommend at least adding a placeholder return value until the function is done, something like
return "";
.看起来不喜欢“cout”,您是否包括名称空间 std?
另外,请在使用函数之前检查是否声明了该函数。
It appear that does not like the 'cout', are you including the namespace std?
Also, check that you declare the function before using it.
完整代码
The full code