You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何在类内定义另一个类的实例并解决声明错误?

问题解决方法

先拆解你代码里的几个语法问题,逐个修正就能解决报错:

  1. 类定义末尾必须加分号
    C++规定类定义结束后必须加;,你的cars和colors类末尾都遗漏了这个分号,这会导致编译器解析混乱,直接补上:
class cars
{
public:
   int price(int x);
}; // 补上分号

class colors
{
public:
   int func1(...); // 改成函数声明,和后续定义匹配
   int func2(...); // 同步修改
   cars fusca;
}; // 补上分号
  1. 成员函数声明与定义要匹配
    你在colors类里把func1、func2声明成了int变量,但后面又将它们定义为函数,这会引发冲突。必须把类内的声明改成函数形式,和定义的签名对应。

  2. 修正函数参数的错误写法
    func2里的..是非法写法,改成...或者你实际需要的参数列表。另外最好给price函数补个实现,避免链接阶段报错。

修正后的完整代码

#include <iostream>
using namespace std;

class cars
{
public:
    int price(int x) {
        // 给price函数添加简单实现
        return x * 2;
    }
};

class colors
{
public:
    int func1(...);
    int func2(...);
    cars fusca; // 现在可以正常声明实例
};

int colors::func1(...)
{
    // 直接通过this->fusca调用成员函数
    int p = this->fusca.price(5);
    cout << "func1中获取的价格:" << p << endl;
    return 0;
}

int colors::func2(...)
{
    this->fusca.price(10);
    cout << "func2中调用price(10)" << endl;
    return 0;
}

// 测试代码
int main() {
    colors c;
    c.func1();
    c.func2();
    return 0;
}

改完后,colors类内的fusca实例就能在所有成员函数里正常调用了,之前的unknown override specified报错主要是类定义没加分号导致的语法解析混乱。

内容的提问来源于stack exchange,提问作者Cesar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:54:20