【发布时间】:2023-03-16 09:04:01
【问题描述】:
C++ 中的新功能,我想在另一个类中使用一个带有构造函数的类,并在全局范围内使用它的方法。
MyMachine 类调用 MyComponent 类。如果 MyComponent 没有构造函数,它可以工作,但我不知道如何使用构造函数调用它。
工作:
#include <iostream>
/*********************************************
* MyComponent
*********************************************/
// MyComponent.h
class MyComponent
{
public:
int _id;
MyComponent();
int getId();
};
// MyComponent.cpp
MyComponent::MyComponent()
{
}
int MyComponent::getId()
{
return _id;
}
/*********************************************
* MyMachine
*********************************************/
// MyMachine.h
class MyMachine
{
private:
MyComponent component;
public:
MyMachine();
void printComponentInfo();
};
MyMachine::MyMachine()
{
component._id = 123456;
}
void MyMachine::printComponentInfo()
{
int id = component.getId();
std::cout << id << "\n";
}
/*********************************************
* Main
*********************************************/
int main()
{
MyMachine machine;
machine.printComponentInfo();
return 0;
}
显示 123456
但是使用构造函数,它不起作用:
#include <iostream>
/*********************************************
* MyComponent
*********************************************/
// MyComponent.h
class MyComponent
{
public:
int _id;
MyComponent(int id);
int getId();
};
// MyComponent.cpp
MyComponent::MyComponent(int id)
{
_id = id;
}
int MyComponent::getId()
{
return _id;
}
/*********************************************
* MyMachine
*********************************************/
// MyMachine.h
class MyMachine
{
private:
MyComponent component(int id);
public:
MyMachine();
void printComponentInfo();
};
MyMachine::MyMachine()
{
component._id = 123456;
}
void MyMachine::printComponentInfo()
{
int id = component.getId();
std::cout << id << "\n";
}
/*********************************************
* Main
*********************************************/
int main()
{
MyMachine machine;
machine.printComponentInfo();
return 0;
}
抛出错误
all.cpp:在构造函数“MyMachine::MyMachine()”中:all.cpp:43:7: 错误: 无效使用成员函数‘MyComponent MyMachine::component(int)’ (你忘了'()'吗?) 组件._id = 123456; ^~~~~~~~~ all.cpp:在成员函数'void MyMachine::printComponentInfo()'中:all.cpp:48:16:错误:无效使用 成员函数‘MyComponent MyMachine::component(int)’(你 忘记“()”?) int id = component.getId();
【问题讨论】:
-
使用member initializer list调用参数构造函数
标签: c++ class object constructor