c++ - iostream 不打印到第二个源类中的终端 (c++)

标签 c++ object g++ iostream most-vexing-parse

当我尝试在构造函数中执行 cout 时,它不会打印出来。我知道 cout 在我的终端上工作,因为我可以从 main() 调用它,但不能从带有 CharacterStats.hpp header 的 CharacterStats.cpp 类调用它。

没有应有的终端输出。我期待 "---DATALESS UNIT CREATED---" 出现在输出中

我用

g++ -o a main.cpp CharacterStats.cpp CharacterStats.hpp    
./a 

编译执行,什么都不打印

main.cpp

#include "CharacterStats.hpp"
int main(void){
    CharacterStats coreUser();
    return 0;
}

CharacterStats.cpp

#include "CharacterStats.hpp"
#include <iostream>

using namespace std;

CharacterStats::CharacterStats(char name, bool type, short strength, short armor, short resist, short speed, short luck){
    cout << "---CORE DECLARED---" << endl;
    this->name = name;
    this->type = type;
    this->strength = strength;
    this->armor = armor;
    this->resist = resist;
    this->speed = speed;
    this->luck = luck;
}
CharacterStats::CharacterStats(){
    cout << "---DATALESS UNIT CREATED---" << endl;
}

CharacterStats.hpp

#ifndef CHARACTER_STATS
#define CHARACTER_STATS

class CharacterStats{
    private:
        char name;
        bool type;
        short strength, armor, resist, speed, luck;

    public:
        CharacterStats(char, bool, short, short, short, short, short);
        CharacterStats();
};
#endif /* CHARACTER_STATS */

最佳答案

这是因为您没有调用构造函数。

 CharacterStats coreUser();

声明一个函数,不带任何参数并返回一个CharacterStats

你想要的是

CharacterStats coreUser;

容易犯的错误。

关于c++ - iostream 不打印到第二个源类中的终端 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56917518/

相关文章:

c++ - 在 map 容器中使用映射值重载 << 运算符

c++ - 告诉 `string::operator==` 从字符串的后面开始比较

c++ - 在 OpenCL 中读取像素 RGB 值的问题

C++ 暂时重定向或禁用 stdio

Java 使用instanceof 但基于方法参数

javascript - Object.assign - 合并数组值

java - 我应该允许对象从其接口(interface)中删除自身吗? OOD 正确吗?

templates - "expected initializer before ` < ' token"在全局命名空间中具有内联模板函数

c++ - 命名空间 ‘function’ 中的 ‘std’ 没有命名类型

c++ - 满足条件时是否可以在 GLSL 着色器中回调 C/C++ 函数/代码?