从成员对象调用方法
Calling method from member object
我在调用作为某个类成员的对象的成员方法时遇到问题。我的意思是?我有班级CPosition
:
Cposition.h
#ifndef CPOSITION_H
#define CPOSITION_H
class CPosition
{
public:
CPosition(QString name, QString description);
QString toString();
private:
QString m_name;
QString m_description;
};
#endif // CPOSITION_H
叮叮.cpp
#include <QString>
#include "cposition.h"
CPosition::CPosition(QString name, QString description)
: m_name(name), m_description(description)
{
}
QString toString()
{
QString test("Test - method called!");
return test;
}
然后我有一个类CPerson
其中一个成员是指向CPosition
对象的指针。在方法 CPerson::getPosition
中,我想仅在指针存在时才调用方法 CPosition::getPosition
:
cperson.h
#ifndef CPERSON_H
#define CPERSON_H
class CPosition;
class CPerson
{
public:
CPerson(QString name);
QString getPosition();
private:
QString m_name;
CPosition * m_position;
CEmployer * m_employer;
};
#endif // CPERSON_H
人.cpp
#include <QTextStream>
#include <QString>
#include "cperson.h"
#include "cposition.h"
CPerson::CPerson(QString name) : m_name(name){}
QString CPerson::getPosition()
{
QString str;
QTextStream cout(&str);
if(m_position) //here check if pointer exist
{
cout << "Position: " << m_position->toString(); //<---- here is problem
}
else
cout << "Position doesn't exist!!!" << endl;
return str;
}
当我构建这个项目时,我收到一个错误:
C:QtProjectsTutorialqt2cperson.cpp:28: error: undefined reference to `CPosition::toString()'
我正在使用QtCreator IDE。有没有人可以帮助我解决这个问题或解释为什么这不起作用?
当您使用 定义toString()
方法时
QString toString()
{
//code
}
cposition.cpp
文件中的原型,它不是CPosition
类的成员。这就是为什么当您尝试从类型 CPosition
的指针调用此方法m_position
时,您会收到未定义的引用错误,因为您尚未实现cposition.h
文件中贴花的 toString()
方法。
将文件中toString()
方法的原型从 cposition.cpp
QString toString()
自
QString CPosition::toString()
{
//write code here
}
以便编译器知道cposition.cpp
文件中实现toString()
方法是cposition.h
文件中声明的方法。
基本上,您没有为toString
方法提供实现。正确的方法应该是:
QString CPosition::toString()
{
QString test("Test - method called!");
return test;
}
相关文章:
- 如何强制从重写方法调用重写的方法基方法?
- C++:使用方法调用析构函数的顺序是什么?
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 使用 object 中的方法调用带有 std::bind 和 std::function.target 的 C 样式函数
- 指向类方法调用的指针
- 如何使用 SFINAE 在方法调用中有条件地定义变量?
- 是否有可以处理方法调用依赖关系的设计模式?
- 如何缩短C++中的方法调用?
- 从部分专用模板方法调用模板非静态方法
- 有没有办法禁止派生类中的基类方法调用?
- 为什么这C++只在编译器上编码一个不明确的方法调用Microsoft?
- 从父方法调用子方法
- 如何将子方法调用到父方法
- 虚拟函数在哪里使用 vpointer to vtable 来解析方法调用,非虚拟方法存储在哪里以及如何解析它们?
- 从静态方法调用静态函数指针
- 从同一类中的另一个方法调用方法时出错
- 方法调用意外地像 l 值一样起作用
- 无法从派生的一个方法调用基类方法
- 从类方法调用命名空间中名为 Same 的函数时,重载解析失败
- C 多线程JAVA JNI方法调用