繁体   English   中英

'B::operator A' 使用未定义的类 'A'

[英]'B::operator A' uses undefined class 'A'

我在我的一门 C++ 课程中找到了以下示例。 当我尝试编译它时,出现以下错误:

'B::operator A' uses undefined class 'A'

为什么说A类是未定义的?

#include<iostream>
using namespace std;

class A;
class B
{
    int x;
public: B(int i = 107) { x = i; }
        operator A();
};
B::operator A() { return x; }

class A
{
    int x;
public: A(int i = 6) { x = i; }
        int get_x() { return x; }
};

int main()
{
    B b;
    A a = b;
    cout << a.get_x();
    system("Pause");
}

编译器需要知道这里的 A 是什么:

B::operator A() { return x; }

但是你只有一个前向声明。 您需要将A类的声明移到B上方

您只能使用指向不完整类型的指针或引用,这是您转发声明类型时所拥有的

您需要在 B 之上声明 A,以便 A 的定义对 B 可见。

#include<iostream>
using namespace std;

class A
{
    int x;
public: A(int i = 6) { x = i; }
        int get_x() { return x; }
};


class B
{
    int x;
public: B(int i = 107) { x = i; }
        operator A();
};
B::operator A() { return x; }

int main()
{
    B b;
    A a = b;
    cout << a.get_x();
}

这应该有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM