【问题标题】:Can't get header files to work无法让头文件工作
【发布时间】:2013-11-10 17:29:47
【问题描述】:

我现在正在学习头文件和类,但我似乎无法让它们工作。我看不出我做错了什么。我已将错误包含在编译器说有错误的 cmets 中。我该如何解决这个问题?

main.cpp

#include <iostream>
#include <conio.h>
#include "Header.h" //Error: In file included from C:\Users\Brandon\Desktop\
                             C++ Practice\Header Practice\Main.cpp 

int main()
{
    Header Test;
    Test.Header(); Error: invalid use of `class Header' 

    getch();
    return 0;
}

头文件.h

#ifndef Header_H_
 #define Header_H_

 class Header
{
 public:
        void Header(); //Error: return type specification for constructor invalid 
};

#endif // Header_H_

和 Header.cpp。

#include "Header.h"

Header::Header()
{
 std::cout << "Everything is working./n" << std::flush;
};

【问题讨论】:

  • 构造函数没有类型说明符。从 Header.h 中的 void Header(); 中删除 void

标签: c++ class header


【解决方案1】:

void Header(); 中的Header.h 中删除void

Header.cpp,去掉分号:

#include "Header.h"

Header::Header()
{
 std::cout << "Everything is working./n" << std::flush;
}; <------ REMOVE SEMICOLON

main.cpp - 你这样做Test.Header() 调用构造函数是错误的。

您应该使用Header Test;Header *Test = new Header()

【讨论】:

  • 我做了你说的一切,但我收到了链接器错误。它说“ [链接器错误] 未定义对 `Header::Header()' 的引用。”我该如何解决?这是我删除 Test.Header() 后引起的。
  • @BrandonHoutzer。你是怎么编译的。听起来你只是在编译main。 g++ main.cpp Header.cpp 应该可以工作。
  • @BrandonHoutzer 你按照 Loki 说的做了吗?你在哪个平台上(Linux、Mac、Windows)?
  • @Loki Astari:我正在使用 Dev C++。我已经编译了它们中的每一个。编译 main 时仍然出现链接器错误。
  • @BrandonHoutzer DevC++ 不是很好。我刚刚用上面的更正测试了你的代码,它编译得很好。
【解决方案2】:

void Header(); 行中删除void。构造函数的声明没有返回类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多