首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“‘class”:非法使用此类型作为表达式,如何修复它?

“‘class”:非法使用此类型作为表达式,如何修复它?
EN

Stack Overflow用户
提问于 2019-12-05 20:22:51
回答 1查看 48关注 0票数 0

当我试图编译我的程序时,我得到了这些错误

1>c:\users\danilo\desktop\lab2\project1\project1\main.cpp(11):error 1>c:\users\danilo\desktop\lab2\project1\project1\fighter.h(9)::'Fighter':在标识符'f1‘1>c:\users\danilo\desktop\lab2\project1\project1\之前非法使用此类型作为表达式1>c:\users\danilo\desktop\lab2\project1\project1\fighter.h(9):注意:请参见声明'Fighter’1>c:\users\danilo\desktop\lab2\project1\project1\main.cpp(11):error C2146: 1>c:\users\danilo\desktop\lab2\project1\project1\main.cpp(11):error: missing ')‘)’1>c:\users\danilo\desktop\lab2\project1\project1\main.cpp(12):(12):错误错误:语法错误:'}‘main.cpp C2059 C2143:语法错误:缺少';‘在'}’之前

我的主文件如下所示:

代码语言:javascript
复制
#include "Fighter.h"
#include "Spell.h"
#include "Player.h"
#include "Wizard.h"
#include "Collection.h"

int lastID = 0;

int main{
    Fighter f1;
    f1("A", 100, 100);
}; 

我的Fighter.h看起来像这样

代码语言:javascript
复制
#define FIGHTER_H

#include "Card.h"
#include <string>
#include <iostream>
using namespace std;

class Fighter : public Card {
    int power;
public:
    virtual string getCategory() const override {
        return "FIGHTER";
    }
    int getPower() const {
        return power;
    }
    Fighter(string Name_, int neededEnergy_, int power_) : Card(Name_, neededEnergy_), power(power_) {}
    void operator>(const Fighter& f) const {
        if (this->getPower() > f.getPower()) {
            cout << this->getName() << " is stronger " << endl;
        }
        else {
            cout << f.getName() << " is stronger " << endl;
        };
    }
    virtual void write(ostream& it) const override {
        it << "(power: " << getPower() << ")";
    }
};


#endif FIGHTER_H

这里的问题是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-05 20:30:36

您的main函数缺少括号。这

代码语言:javascript
复制
int main{

应该是

代码语言:javascript
复制
int main(){

此外,f1("A", 100, 100)不是构造函数调用,而是对operator()的调用,这是您所没有的。改为执行以下操作:

代码语言:javascript
复制
Fighter f1("A", 100, 100);

另外,确保你的守卫是一致的。缺少一个#ifndef FIGHTER_H

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59195103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档