gpt4 book ai didi

c++ - 在 C++ 中将对象作为参数传递

转载 作者:行者123 更新时间:2023-11-28 01:16:01 30 4
gpt4 key购买 nike

我目前遇到了一些关于通过函数传递对象返回值的问题。我的函数原型(prototype)在 .h 中并在 .cpp 中定义。例如 Class::function(int value); 的函数接受一个整数值。当我调用对象 objectName name; 并将其作为 Class::function(name); 传递时。

// foo.h
class foo
{
void function(int value);
}


//foo.cpp
void foo::function(int value)
{
// CODE HERE
}


//main.cpp
int main()
{
objectName name;
foo::function(name);
}

我收到的错误如下:

Main.cpp:43:23: error: no matching function for call to ‘class::function(objectName&)’ name.function(name); // passes value to the function

最佳答案

调用 foo::function(name); 是三重错误。

  1. 这是对静态函数的调用,但是function不是静态的,所以你需要一个foo的实例来调用这个函数:
foo myFoo;
myFoo.function(0);
  1. function 是私有(private)的,因此不能在 foo 之外使用。默认情况下所有类成员都是私有(private)的,因此您需要将其声明为公共(public):
class foo {
public:
void function(int);
}
  1. function 接受一个 int 作为参数,但您传递了一些 objectName 类型的对象。这更像是一个设计问题,function 应该采用什么参数? int 还是 objectName?也许你想要
//header
class foo {
public:
void function(objectName &);
}

// cpp
void foo::function(objectName &value) {
}

关于c++ - 在 C++ 中将对象作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58690542/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com