【问题标题】:class in separate file c++单独文件中的类c ++
【发布时间】:2016-12-20 16:10:38
【问题描述】:

您好,我正在使用 C++ 开发 CLR 应用程序。经过几个小时的工作,我决定将类移动到不同的文件比将所有内容都放在同一个文件中更好。我创建了新的头文件和新的 cpp 文件,但我只是一个初学者,所以我有可能做错了什么。

这是我的头文件

#pragma once

class Show {
public:
    void Show::show_all(int num, int id_master, int id_slave, int periferia, int data);
}; 

我的cpp文件(只是简单的打印功能)

#include "Show.h"
#include <stdio.h>

class Show{
private:
    void show_all(int num, int id_master, int id_slave, int periferia, int data) {

    printf("%d\n", num);
    printf("id of mastra is: %d\n", id_master);
    printf("id of slave is: %d\n", id_slave);
    printf("id of device is: %d\n", periferia);
    printf("in data part %d\n", data);

    };
};

然后我主要做这样的事情

Show sh;

然后,当我尝试像这样调用我的函数时

sh.vypis_vsetko(num, id_master, id_slave, periferia, data);

但我得到了很多我不明白的错误(全部在主函数中)

  • 'sp':未声明的标识符(我总是提到它)
  • “显示”:未声明的标识符
  • “.show_all”左侧必须有类/结构/联合
  • 语法错误:缺少';'在标识符“sh”之前

我花了很多时间试图解决这个问题,但没有任何结论。 我将非常感谢任何建议。

【问题讨论】:

  • 这里有很多非常基本的错误。请查看有关分离头文件和实现文件的教程。
  • 好吧,代码完全不正确,虽然我很好奇,你为什么要将访问修饰符从public更改为private

标签: c++ file class


【解决方案1】:

对于初学者来说,在头文件中,声明一个类方法是在没有将类名前缀到方法名的情况下完成的:

class Show {
public:

     void show_all(int num, int id_master, int id_slave, int periferia, int data);
};

最后,在.cpp 文件中定义一个类方法是在没有类声明的情况下完成的,无论如何:

void Show::show_all(int num, int id_master, int id_slave, int periferia, int data) {

    printf("%d\n", num);

    // the rest of the code.

您已经在 #included 头文件中声明了该类。

【讨论】:

  • 完整的类声明确实需要从其函数的定义中可见,但并非像 OP 所写的那样。
  • 头文件得到#included,应该没问题。
  • 我已尝试更正我的代码,但仍然遇到相同的错误。
  • @SamVarshavchik 是的,只是选择“在没有类声明的情况下完成”位;)
猜你喜欢
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多