将类分成cpp和头文件(C ++)

时间:2017-10-10 04:06:46

标签: c++ visual-c++

我是C ++语言的新手。 所以我被分配将现有文件拆分为三个源代码:swap.h,swap.cpp和source3.cpp

现有档案:

#include <iostream>

void get_numbers (int&, int&);
void swap_values (int&, int&);
void show_results (int, int);

int main () {
   int first_num, second_num;

   get_numbers (first_num, second_num);
   swap_values (first_num, second_num);
   show_results (first_num, second_num);
   return 0;
}

void get_numbers (int& input1, int& input2) {
   using namespace std;
   cout << "Enter two integers: ";
   cin >> input1 >> input2;
}

void swap_values (int& variable1, int& variable2) {
   int temp;
   temp = variable1;
   variable1 = variable2;
   variable2 = temp;
}

void show_results (int output1, int output2) {
   using namespace std;
   cout << "In reverse order the numbers are: "
        << output1 << " " << output2 << endl;
}
  1. swap.h包含函数原型

  2. swap.cpp包含函数实现

  3. source3.cpp包含主要功能

  4. 对于swap.h

    #pragma once
    #ifndef swap_h
    #define swap_h
    
    void get_numbers(int&, int&);
    void swap_values(int&, int&);
    void show_results(int, int);
    #endif
    

    for swap.cpp

        #include <iostream>
    
        void get_numbers(int& input1, int& input2) {
           using namespace std;
           cout << "Enter two integers: ";
           cin >> input1 >> input2;
        }
    
        void swap_values(int& variable1, int& variable2) {
            int temp;
            temp = variable1;
            variable1 = variable2;
            variable2 = temp;
        }
    
        void show_results(int output1, int output2) {
           using namespace std;
           cout << "In reverse order the numbers are: "
           << output1 << " " << output2 << endl;
        }
    

    for source3.cpp:

        #include "stdafx.h"
        #include "swap.h"
        int main()
        {
           int first_num, second_num;
    
           get_numbers(first_num, second_num);
           swap_values(first_num, second_num);
           show_results(first_num, second_num);
           return 0;
        }
    

    当我调试程序时,它说:“无法启动程序'C:\ User ......' 该系统找不到指定的文件。我做错了什么?

2 个答案:

答案 0 :(得分:1)

由于您的代码编译成功但无法启动,因此您可能遇到与调试环境相关的问题。

此外,一旦有#ifdef,您就不需要#define#endif#pragma once

答案 1 :(得分:0)

如果您提供的是整个代码,则swap.h中未包含swap.cpp。因此,您有函数的定义,但没有声明。虽然我会想到另一个错误或至少是一个警告。试着解决这个问题。

如果不起作用,请尝试构建发行版。它编译?它开始了吗?当它开始时,它会做什么吗?如果我之前提到的是问题,我希望程序能够直接运行到最后,而不做任何事情。

如果问题出在主文件中swap.h,请确保它位于同一位置,或者包含路径指向包含它的目录。 stdafx.h

也是如此

此外,您不需要#pragma once#ifndef #define以及#endif。除去其中任何一个,我建议使用#ifndef #define#endif,因为#pragma once不支持任何地方。但对你而言,这无关紧要。