创建一个返回类类型的函数

Creating a function which returns a class type

本文关键字:类型 函数 返回 一个 创建      更新时间:2023-10-16

>我正在尝试创建一个具有类Node类型并将Node作为参数的函数。目前我有这个,它不起作用;

Node return_node (Node inNode)
{
    return inNode.print_values();
}

我已经在此上面声明了一些节点,但无法弄清楚如何使用这个函数,我也不确定你甚至可以创建一个将类型作为类的函数?我希望能够创建一个函数,该函数采用我声明的类的类型。

print_values(( 函数如下所示;

void print_values()
{
    cout << "A: " << A << "nB: " << B;
}

截至目前return_node()是一个返回类 Node 值的函数。从您要执行的操作来看,您正在尝试打印出Node的值,这些值可能包含整数,字符串等。无论print_values()只是打印出字符串还是返回字符串,都不符合函数的要求。为了澄清,return_node(( 需要返回 Node 类的一些内容。

如果您只是想打印出值(print_values通过coutprintf打印值(,我建议您制作类型 void 的return_node。但是,如果您尝试返回节点,请尝试return inNode .当您尝试编译它时,您会发现不会有错误。

编辑

:刚刚看到您所做的编辑。print_values()方法是否属于Node类?

类只是一个

类型,所以语句"具有类类型的函数"并没有真正的意义。相反,您应该只说"具有类型类"。

您应该根据函数作为参数的类型(函数域(

和返回的类型(协域(来考虑函数。 例如,函数int mul2(int x) { return 2 * x; }具有域int和共域int(即 int -> int (。

您已声明函数return_node具有域Node和协域Node(即 Node -> Node (。那么,您对return_node的定义(即实施(是否满足这一声明?好吧,return_node只是返回 print_values 返回的值, 本身具有隐式域Node和协域voidreturn_nodeprint_values的共域是否相同?好吧,不,正如Node != void,因此您对return_node的定义不满足给定的声明。

要帮助你是相当困难的,因为你以错误的方式使用了正确的术语。让我们从标题开始:

"创建返回类类型的函数">

不。你想要编写一个返回类类型值的函数。进一步。。。

"我正在尝试创建一个具有类节点类型并将节点作为参数的函数。"

不。我想你的意思是你在标题中已经说过的:返回一个Node并将Node作为参数传递(你的函数的类型是 Node TYPE_OF_YOUR_FUNCTION (Node) ,仅供记录(。

澄清了这一点之后,我实际上不知道你的问题是什么。如果你有这样的类:

struct MyClass {
    int x;
}

您可以编写一个函数,例如:

MyClass MyMyClassFunction(MyClass a){
    a.x ++;
    return a;
}

在您的函数中,您不会返回任何内容。您将其声明为返回一个Node但实际上返回了voidinNode.print_values();值(因为这是print_values()的返回类型(。将其更改为例如

Node return_node (Node inNode) {
    inNode.print_values();
    return inNode;
}