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

Turbo C编写C++代码遇‘Type name expected’错误及警告的解决方法

问题修复方案

咱们逐个解决你遇到的问题:

1. 第37行错误:Type name expected

min是C里的标准关键字(对应标准库的最小值函数/模板),Borland Turbo C会把它识别为关键字,所以不能用来当类名。你得把类名改成非关键字的名称,比如Minute就很合适。

2. 第30行和第48行警告:包含while的函数无法内联展开

Turbo C++默认会把类内直接定义的成员函数当作inline(内联)函数处理,但内联函数不适合包含while这类循环逻辑——编译器没法高效展开带循环的函数,于是抛出警告。

解决办法很简单:把包含while循环的成员函数移到类外面定义,这样编译器就不会尝试内联它们,警告自然就消失了。

额外逻辑错误修复

你的convert函数里有个死循环问题,得一起改掉:
原来的循环只累加分钟数,但没减少秒数,导致sec永远满足>=60的条件,循环停不下来。必须在循环里给sec减去60:

while (sec >= 60) {
    mini += 1;
    sec -= 60;
}

修复后的完整代码
#include <iostream.h>
#include <conio.h>

class second {
protected:
    int sec;
public:
    second() { sec = 0; }
    void getsec() { 
        cout << "\n enter the second time:"; 
        cin >> sec; 
    }
};

// 类名从min改为Minute,避免关键字冲突
class Minute : public second {
protected:
    int mini;
public:
    Minute() { mini = 0; }
    // 仅在类内声明函数,类外实现
    void convert();
};

class hour : public Minute {
protected:
    int hr;
public:
    hour() { hr = 0; }
    // 仅在类内声明函数,类外实现
    void convert1();
};

// 类外定义convert函数,规避内联警告
void Minute::convert() {
    getsec();
    while (sec >= 60) {
        mini += 1;
        sec -= 60; // 修复死循环问题
    }
}

// 类外定义convert1函数,规避内联警告
void hour::convert1() {
    convert();
    while (mini >= 60) {
        mini -= 60;
        hr += 1;
    }
    cout << "hr:" << hr << "\t mini:" << mini << "\t sec:" << sec;
}

int main() {
    clrscr();
    hour h;
    h.convert1();
    getch();
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:45