【问题标题】:Testing some classes in C ++ [closed]在 C++ 中测试一些类 [关闭]
【发布时间】:2012-12-24 04:09:15
【问题描述】:

我只想在 C++ 程序中测试一些类,但在 Xcode 中出现“预期表达式”错误。

其实这里是我写的代码:

#include <iostream>


using namespace std;


class A {
    public :
    virtual void M1 () { cout << " A::M1"; }
    void M2 () { cout << " A::M2"; }
    virtual void M3 () { cout << " A::M3"; }
};


class B : public A {
    public :
    void M1 () { cout << " B::M1"; }
    virtual void M2 () { cout << " B::M2"; }
    void M3 () { cout << " B::M3"; }
};


class C : public B {
    public :
    void M1 () { cout << " C::M1"; }
    void M2 () { cout << " C::M2"; }
    void M3 () { cout << " C::M3"; }
};


class D {
    public :
    D (A v, A& r, B& s) : va (v), ra (r), rb (s) { }
    void M1 () { cout << " D::M1 -->"; va.M1 (); ra.M1 (); rb.M1 (); cout << ’\n’; }
    void M2 () { cout << " D::M2 -->"; va.M2 (); ra.M2 (); rb.M2 (); cout << ’\n’; }
    void M3 () { cout << " D::M3 -->"; va.M3 (); ra.M3 (); rb.M3 (); cout << ’\n’; }
    protected :
    A va; A& ra; B& rb;
};


int main(int argc, const char * argv[])
{

A a; B b; C c; D d1 (a, a, b); D d2 (a, b, c); D d3 (a, c, b); D d4 (b, c, c);
cout << "avec d1 :\n"; d1.M1 (); d1.M2 (); d1.M3 ();
cout << "avec d2 :\n"; d2.M1 (); d2.M2 (); d2.M3 ();
cout << "avec d3 :\n"; d3.M1 (); d3.M2 (); d3.M3 ();
cout << "avec d4 :\n"; d4.M1 (); d4.M2 (); d4.M3 ();

return 0;

}

我真的不知道那个错误是从哪里来的。

有人有想法吗?

【问题讨论】:

  • 错误信息肯定带有行号。
  • 错误出现在哪一行?
  • 在 D 类中,3 条空线(M1、M2 和 M3)
  • 那是完美的杰西。感谢您的帮助

标签: c++ class expression public void


【解决方案1】:

将所有 () 替换为 ("):

void M1 () { cout << " D::M1 -->"; va.M1 (); ra.M1 (); rb.M1 (); cout << ’\n’; }
void M2 () { cout << " D::M2 -->"; va.M2 (); ra.M2 (); rb.M2 (); cout << ’\n’; }
void M3 () { cout << " D::M3 -->"; va.M3 (); ra.M3 (); rb.M3 (); cout << ’\n’; }

变成:

void M1 () { cout << " D::M1 -->"; va.M1 (); ra.M1 (); rb.M1 (); cout << "\n"; }
void M2 () { cout << " D::M2 -->"; va.M2 (); ra.M2 (); rb.M2 (); cout << "\n"; }
void M3 () { cout << " D::M3 -->"; va.M3 (); ra.M3 (); rb.M3 (); cout << "\n"; }

或者也考虑使用 endl,如果它被缓冲,它将刷新流:

void M1 () { cout << " D::M1 -->"; va.M1 (); ra.M1 (); rb.M1 (); cout << endl; }
void M2 () { cout << " D::M2 -->"; va.M2 (); ra.M2 (); rb.M2 (); cout << endl; }
void M3 () { cout << " D::M3 -->"; va.M3 (); ra.M3 (); rb.M3 (); cout << endl; }

【讨论】:

    【解决方案2】:

    我很确定这是’\n’ 使用的单引号。请将它们更改为'\n'

    【讨论】:

    • 其实我会选择 "\n"
    • 是的,我刚刚测试过。用“\n”来做
    • @stevejpurves:为什么要从 char 更改为 char 数组?
    • 没错,我只是把它改成了 '\n' 就可以了。其实我什至不知道那种单引号是从哪里来的。这很奇怪
    • @Jesse 在这段代码中,只是一致性。始终使用双引号,但我明白你的意思; \n 是单个字符。如上所述,endl 可能两者都更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多