小编Chr*_*isM的帖子

C++将ostream作为参数传递

我正在为虚拟rolodex做一个家庭作业项目,该项目已经调用了一个主类,一个rolodex类和一个卡类.要将所有"卡"的内容输出到控制台,赋值表示main()应该在rolodex类中调用show(...)函数,并将其传递给ostream并显示(...)然后迭代通过卡片,调用每个showCard()函数.实际显示由卡对象的showCard()函数完成,显示在提供的ostream上.

我不明白为什么ostream应该/应该通过任何地方.似乎作业要求这样的事情:

main() {
   Rolodex myRolodex; 
   ostream myStream; 
   myRolodex.show(myStream); 
}

void Rolodex::show(ostream& theStream) {
   //for each card 'i' in the Rolodex...
   myCard[i].show(theStream);
}

void Card::show(ostream& theStream) {
   theStream << "output some stuff" << endl;
}
Run Code Online (Sandbox Code Playgroud)

而不是像这样的东西:

main() {
   Rolodex myRolodex;  
   myRolodex.show(); //no ostream passed 
}

void Rolodex::show() {
   //for each card 'i' in the Rolodex...
   myCard[i].show();//no ostream passed
}

void Card::show() {
   cout << "output some stuff" << endl;
}
Run Code Online (Sandbox Code Playgroud)

我是误解了使用ostream作为参数还是错过了一些其他明显的理由将流pass传递到流中?

c++ parameter-passing ostream

9
推荐指数
1
解决办法
3万
查看次数

JSTL表达式语言访问对象属性

今天我正在按照一个教程让我挠头一小时.考虑:

public class MyClass {
    public int getTotal() {
        amount = 100;
        return amount;
    }
}
Run Code Online (Sandbox Code Playgroud)

以及JSP的摘录:

<p>Total: ${objectOfTypeMyClass.total}</p> //object instantiated elsewhere
Run Code Online (Sandbox Code Playgroud)

代码中没有任何地方声明或使用过名为" total " 的实例变量.在整个项目中(除了JSP之外)对"total"一词的唯一引用是方法getTotal().

因此,在经历了一些绝望的最后一次尝试之后,表达式语言似乎将$ {someObject.var}计算为"调用someObject对象的getVar()方法" .

我使用这个长篇教程超过一个星期,认为$ {someObject.var}说"从someObject直接获取保存的实例变量" var " .

我是否一直都错了,我的观察是正确的,为了使用EL引用任何实例变量,你必须提供一个名为getVarname()的相应getter方法,其中" Varname "是实例变量的名称?

此外,EL在这方面似乎不区分大小写.在上面的示例中,$ {objectOfTypeMyClass.total}中的 "total" 全部为小写,其中方法getTotal()具有大写"T".

虽然我们在这里,为什么我们不需要实例化变量"total"?我猜EL实际上并没有引用实例变量......只是一个getter方法?

是什么赋予了?

methods getter jstl el

7
推荐指数
1
解决办法
1万
查看次数

C++在同一行上声明多个对象实例的问题

对于家庭作业,当主类在同一行上实例化同一类的两个对象时,我很难理解行为,如下所示.请注意,赋值的对象是类的行为类似于int:

main () {
  MyClass x,y = 5;
  cout << "x = " << x << endl; // outputs x = 0...why not 5???
  cout << "y = " << y << endl; // outputs y = 5
}
Run Code Online (Sandbox Code Playgroud)

这里是头文件类定义:

class MyClass {
   public:
      MyClass(int initValue = 0); //constructor
      operator int() {return myValue}; //conversion operator to int
   private:
      int myValue;
}
Run Code Online (Sandbox Code Playgroud)

最后,我的源文件:

#include "MyClass.h"

MyClass::MyClass(int initValue) {
   myValue = initValue;
}
Run Code Online (Sandbox Code Playgroud)

为什么不像y那样用x值初始化x?

c++ initialization declaration object

1
推荐指数
1
解决办法
4044
查看次数