如何将变量(从类类型的对象)传递给函数(在main.cpp中)仅作为对象
How to pass variables (from Object of type Class) to functions (in the main.cpp) as an object only
我有一个类(a),它包含例如五个变量(参数t,z,y,d和f),并且我创建了一个类型为class(a)的对象(a)。然后我有许多函数(X,U,M)包含在"main.cpp"中,每个函数被定义为只接受对象(A)中已经存在的三到四个参数。例如函数(X)只使用变量(t,y和z)
而不是传递参数作为void function(X) (int t, int y, double z){}
,我可以只传递对象(A),让每个函数选择它的参数,只是寻找它需要从对象(A)的参数如下(如果存在的话)?
void function(X) (A()){}
我希望避免使用以下语句。
void function(X) (A.t, A.y, A.z){}
(请注意,我是新的c++和我在Qt Creator工作。)
是的,您可以将对象传递给函数。有几种方法可以将类的实例传递给函数:
-
按值(如果
function()
需要修改obj
,但调用者不需要看到更改并且复制成本低):void function(A obj) {}
-
通过引用(如果
function()
修改了obj
并且更改必须对调用者可见):void function(A& obj) {}
-
由
const
引用(如果function()
没有修改obj
):void function(A const& obj) {}
-
右值引用 (c + + 11):
void function(A&& obj) {}
class A
需要提供对其成员的访问
Easy
class A
{
public:
double z;
};
void func(const A &obj)
{
// Do something with obj.z
std::cout << obj.z << std::endl;
}
int main()
{
A myObj;
myObj.z = 100;
func(myObj);
}
Joachim的解释是你需要的,除了对象应该作为指针或引用传递,以确保它不会被复制。
void someFunction(C& c)
// Accept a reference to a 'C' object
{
// Joachim's code
// This method doesn't change the main from Joachim's
// answer.
}
void someFunction(C* c)
// Accept a pointer to a 'C' object
{
std::cout << "The member i_ is " << c->getI() << std::endl;
// Note the use of '->', not '.' to access the object's method.
}
void main()
{
C c;
c.setI(1);
someFunction(&c);
// The '&' means 'address of' in this context. I.E. you're passing a pointer.
}
如果成员字段是public
,则可以从任何函数访问它们。如果不是public
,则必须向类中添加成员函数来获取值,即所谓的"getter"函数。
#include <iostream>
class C
{
public:
int getI() const { return i_; }
void setI(const int i) { i_ = i; }
private:
int i_;
}
void someFunction(C c)
{
std::cout << "The member i_ in c is " << c.getI() << 'n';
}
int main()
{
C c;
c.setI(123);
someFunction(c);
}
相关文章:
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- "main"函数堆栈中的对象在第一个任务运行时被覆盖 (FreeRTOS)
- 如何获取在 main() 函数中构造的类的创建对象?
- 如何从不同的类中获取函数来调用在 Main 中声明的对象?
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 我们可以在main函数中声明嵌套类对象吗
- 调用Main将替换矢量对象并覆盖数据
- 类对象在 int main() 中'undefined'
- 当我调用 main 中使用 const 对象的 const 函数时,不断出现错误
- 将对象从函数C 中的MAIN更改
- 如何在 main 函数的一个对象中初始化两个类的值?C++
- C :使用Main中定义的对象方法的函数
- 如何修复结构播放器对象中的矢量位置,以便它在 Main 中与 me.position 一起使用?
- 在C 中使用静态功能,我的教授希望我告诉Main哪个对象具有最高优先级,而无需传递任何内容
- main.cpp:(.text+0x8f):对[对象方法]的未定义引用
- 使用 main() 以外的其他函数显示类的对象,但在 main() 中调用;
- 从main()将类对象实例作为参数将参数传递到另一个类对象实例
- 可以(通过编译器)使用多少个线程来初始化全局对象(函数main之前)
- 构造函数在 main 中调用,但对象未正确创建
- 如何在函数内部制作对象并将其返回到main(),而无需删除函数将其删除在C 中