在课堂中使用返回值
using return value in class
标题文件
#ifndef deneme_h
#define deneme_h
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std ;
class A
{
public:
Course ( int code ) ;
int getACode () ;
private:
int code ;
};
class B
{
public:
B ( A * a = NULL) ;
A * getA () ;
private:
A * a ;
friend ostream & operator<< ( ostream & out , B & b ) ;
};
#endif
A.CPP
#include "deneme.h"
using namespace std ;
A :: A ( int code )
{
this -> code = code;
}
int A :: getACode()
{
return this -> code;
}
B.CPP
#include "deneme.h"
using namespace std ;
B::B ( A * a )
{
this -> a = new A(223);
this -> a = a;
}
A * A::getA () { return this -> a;}
ostream & operator<< ( ostream & out , B & b ) { out << b.course->getACode();}
和main.cpp
#include "deneme.h"
using namespace std;
int main(){
Course* c1 = new Course(223) ;
Offering* o1_1 = new Offering(c1);
cout<< *o1_1;
return 0;
}
大家好
我想询问此代码。上面的代码正常运行,并打印223。但是,当我更改操作员时,b.cpp中的零件过载
ostream & operator<< ( ostream & out , Offering & offering ) { out << offering.(getCourse() )->getCourseCode();}
我有一个错误。为什么会出现错误?我不能使用返回值。感谢您的答案。
正如已经说过的,您需要返回,我认为您想要的行是:
ostream & operator<< ( ostream & out , Offering & offering ) { out << ( offering.getCourse() )->getCourseCode(); return out; }
(我移动了一个括号)
删除getCourse()
与iostream一起使用时:
operator<<
应通过const reference进行第二个参数(如果这很微不足道)。
它应该返回其第一个参数。
so
ostream & operator<< ( ostream & out , const B & b )
{
return out << b.course->getACode();
}
ostream & operator<< ( ostream & out , const Offering & offering )
{
return out << offering.getCourse()->getCourseCode();
}
在两种情况下其他语句之后,您也可以将return out
作为单独的语句。
还请注意,在C 中,您不必使用新对象创建所有对象。
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- lock_guard是否保护返回值
- 调用CreateProcess()并获取字符串的返回值
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 查找 GCD:并非所有控制路径都返回值
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 如何从 std::thread 返回值
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- 方法错误"not all control paths return a value"和方法不返回值
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 对fread的返回值感到困惑
- 程序不向函数返回值
- 如何在另一个函数中使用返回值作为参数?
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 使用 std::p air 进行返回值优化
- 在课堂中使用返回值