【问题标题】:Simple Class and Header in Separate File Won't Work单独文件中的简单类和标题不起作用
【发布时间】:2021-02-22 03:55:58
【问题描述】:

我目前正在学习 c++ 一周,这是我的问题:

run.cpp

#include <iostream>
#include "Abc.h"

int main(){
    int a;
    std::cout << "Enter a : ";
    std::cin >> a;

    // Object Initialization
    Abc AbcObj();
}

标题,Abc.h

#ifndef ABC_H
#define ABC_H


class Abc
{
    public:
        Abc();

    protected:

    private:
};

#endif // ABC_H

最后是我的 cpp 文件,Abc.cpp

#include "Abc.h"
#include <iostream>

Abc::Abc()
{
    std::cout << std::endl << "Object created ";
}

为什么我的控制台没有输出?我期待“创建的对象”应该在控制台上。这些文件位于同一目录中。

【问题讨论】:

  • Abc AbcObj(); - 这不是构造函数调用。是功能原型。你只需要Abc AbcObj;
  • 如果我需要构造函数的参数怎么办? @EOF
  • 如果构造函数可以接受参数:Abc AbcObj(arg);
  • 我收到undefined reference 错误兄弟..
  • 您的构造函数不接受参数。您需要创建另一个构造函数)

标签: c++ class oop header


【解决方案1】:

你的错误没有出现,因为你使用了不同的文件,所以我在这个例子中使用了一个

struct Foo
{
    int a;
    Foo()
    {
       std::cout << "Constructor called!";
    }
};

int main()
{
    Foo obj();
}

为什么你没有看到消息? You can read this thread

这里的问题是,Foo obj() 被视为function declaration。要解决此问题,您需要删除 ()

int main()
{
    Foo obj;
} 

已调用构造函数!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多