【问题标题】:Two classes as argument of a class function两个类作为类函数的参数
【发布时间】:2015-03-18 17:27:55
【问题描述】:

我知道标题是歪曲的,但我想不出有什么不同的说法。我需要编写一个使用两个类对象作为参数的类函数。这是我正在尝试做的一个示例:

class list{
private:
    struct ele{
        int num;
        ele *next;
        ele(){
            next=0;
        }
    };

public:
    list();
    ele *first;
    void add (int num);
    void print();
    void dod(list a, list b);

};

void list::dod(list a, list b){
a->print();
b->print();

}

我不知道为什么,但这似乎不起作用。我做错了什么?

【问题讨论】:

  • 如果你在这里问,我们可以假设它不起作用。请提供更多信息,因为该描述几乎没有添加任何内容。
  • “似乎不起作用”并不是表达正在发生的事情的有意义的方式。请说明正在发生的事情以及您的预期。
  • 但它确实有效——当然,在添加了一种打印方式(std::cout)并修复了语法错误(在printprint2 中缺少})之后。
  • 很抱歉没有解释更多。我正在编写一个使用列表添加两个数字的程序。这个想法是我将这两个数字作为两个单独的数字列表导入,将它们相加并打印出来。
  • 这仍然无法解释“似乎不起作用”

标签: c++ function class


【解决方案1】:

您使用-> 来访问指针的成员,而不是对象。对于对象,您使用.

改变

void list::dod(list a, list b){
   a->print();
   b->print();
}

void list::dod(list a, list b){
   a.print(); // Not -> but .
   b.print(); // Same thing.
}

【讨论】:

  • 这不是问题。我需要将void list::dod(list a, list b){ 更改为void list::dod(list *a, list *b){
  • @photons3432 但这问题。
  • 我不明白,你能解释一下吗?
【解决方案2】:

这是您访问班级成员的方式:

list object;
object.print();

list* pointer;
pointer->print();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 2021-04-20
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多