C++ 创建返回类类型的函数

C++ 创建返回类类型的函数,c++,function,class,C++,Function,Class,我正在尝试创建一个函数,它的类型为classNode,并将Node作为参数。 目前我有这个,它不工作 Node return_node (Node inNode) { return inNode.print_values(); } 我已经在上面声明了一些节点,但是我不知道如何使用这个函数,我也不确定你是否可以创建一个将类型作为类的函数? 我希望能够生成一个函数,它采用我声明的类的类型 print_values()函数如下所示: void print_values() { cou

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

Node return_node (Node inNode)
{
    return inNode.print_values();
}
我已经在上面声明了一些节点,但是我不知道如何使用这个函数,我也不确定你是否可以创建一个将类型作为类的函数? 我希望能够生成一个函数,它采用我声明的类的类型

print_values()函数如下所示:

void print_values()
{
    cout << "A: " << A << "\nB: " << B;
}
void打印值()
{
cout
return_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
和codomain
void
。那么
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>。原来我的问题是我在声明