C++ 创建返回类类型的函数
我正在尝试创建一个函数,它的类型为classC++ 创建返回类类型的函数,c++,function,class,C++,Function,Class,我正在尝试创建一个函数,它的类型为classNode,并将Node作为参数。 目前我有这个,它不工作 Node return_node (Node inNode) { return inNode.print_values(); } 我已经在上面声明了一些节点,但是我不知道如何使用这个函数,我也不确定你是否可以创建一个将类型作为类的函数? 我希望能够生成一个函数,它采用我声明的类的类型 print_values()函数如下所示: void print_values() { cou
Node
,并将Node
作为参数。
目前我有这个,它不工作
Node return_node (Node inNode)
{
return inNode.print_values();
}
我已经在上面声明了一些节点,但是我不知道如何使用这个函数,我也不确定你是否可以创建一个将类型作为类的函数?
我希望能够生成一个函数,它采用我声明的类的类型
print_values()函数如下所示:
void print_values()
{
cout << "A: " << A << "\nB: " << B;
}
void打印值()
{
coutreturn_node()
现在是一个返回类node值的函数。从您尝试执行的操作来看,您正在尝试打印节点的值,这些值可能包含整数、字符串等。是否print_values()
只是打印一个字符串或返回一个字符串,它不符合函数的要求。为了澄清这一点,return\u node()需要返回node类的某些内容
如果您只是试图打印出值(print_values通过cout
或printf
打印值),我建议将return_节点设置为void
类型。但是,如果您试图返回节点,请尝试将return inNode
放入其中。您将看到,在尝试编译它时不会出现错误
编辑:刚刚看到您所做的编辑。print\u values()
方法是否属于节点
类?类只是一个类型,因此“具有类的类型的函数”这句话实际上没有意义。相反,您应该说“has type class”
你应该根据函数作为参数的类型(函数域)和返回的类型(密码域)来考虑函数。例如,函数intmul2(intx){return2*x;}
有域int
和密码域int
(即int
->int
)
您已将函数return\u node
声明为具有域节点
和codomain节点
(即节点
)。您的定义(即实现)也是如此如果return\u node
满足此声明,那么return\u node
只返回print\u values
返回的值,该值本身具有隐式域node
和codomainvoid
。那么return\u node
和print\u values
的密码域是否相同?当然不是,因为node!=void
,因此您对返回\u节点的定义不符合给定的声明。很难帮助您,因为您使用了错误的术语。让我们从标题开始:
“创建返回类类型的函数”
否。您想编写一个返回类类型值的函数。
进一步
“我正在尝试创建一个具有类节点类型并将节点作为参数的函数。”
不。我想你的意思是你在标题中已经说过的:返回一个节点
,并将一个节点
作为参数传递(你的函数类型是你的函数(节点)的节点类型
,仅供记录)
澄清之后,我其实不知道你的问题是什么。如果你有这样一节课:
struct MyClass {
int x;
}
MyClass MyMyClassFunction(MyClass a){
a.x ++;
return a;
}
例如,您可以编写如下函数:
struct MyClass {
int x;
}
MyClass MyMyClassFunction(MyClass a){
a.x ++;
return a;
}
在函数中,您没有返回任何内容。您将其声明为返回节点
,但实际上返回了inNode.print_values();
的值,即void
(因为这是print_values()
的返回类型)。将其更改为例如
Node return_node (Node inNode) {
inNode.print_values();
return inNode;
}
print\u values是否返回节点?这个函数到底应该做什么,print\u values()
到底做什么,你到底有什么问题?@LiamMet,你写了什么(cout@LiamMet,为什么它返回Node
,而不是void
?@LiamMet您只需设置您希望函数打印值,现在您说您希望它返回值-请下定决心…另外,return\u Node
对于一个用于打印值的函数来说是个坏名字。是的,该方法确实属于该类。I在总体方案中,我试图将其用于更复杂的循环,但我想尝试给出一个小示例。我希望能够将节点输入到函数中,但Eclipse会说“语句对‘节点’没有影响”这就是为什么我很好奇你是否可以有一个类型为Node的函数?你可以有一个类型为Node
的函数。但是,由于print\u values()
只是打印出一个字符串,return\u Node()
不做它应该做的事情。return\u Node()
需要返回一个节点,但您没有这样做。对于这个特定的函数/想法,由于print\u values()
属于节点类,您可以调用inNode.print\u values()
只要inNode
已经初始化,代码中的任何地方都可以。如果我想返回字符串和int,我需要编写两个单独的函数吗?我想能够将inNode设置为我声明的任何节点,然后让函数在我输入的节点上执行一些循环。在我的问题中,我使用了print_values()作为一个例子,但我认为它的工作原理与我正在尝试的相同。如果您不打印它们并实际尝试获取这些字符串和int值,则必须创建两个单独的函数。例如:int getNodeVal()
和字符串getNodeStr
。如果希望新的节点
具有与先前存在的inNode
相同的属性,则必须使用另一种方法设置所有新变量,或使用指针将这些新的节点
变量设置为当前的inNode
。例如,节点*tmp=inNode>代码>。原来我的问题是我在声明