从main调用类单独的cpp文件中定义的函数时,“标识符未定义”

问题描述

对于c ++来说,我是一个新手,如果我包括定义函数的头文件,我应该能够从main调用函数吗?我曾尝试在函数之前添加static或public,但似乎没有任何变化。

//这是我的主要

#include "pch.h"
#include "myfile1.h"
#include <iostream>

using namespace std;

int main(void){
    function1();
    function2();
}

//我的myfile1标头

#ifndef myfile1_h  
#define myfile1_h

#include <iostream>

using namespace std;

class myClass{
    void function1();

    void function2();
};

#endif


//我的myfile1.ccp

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

using namespace std;

class myClass{
    void function1() {

    }

    void function2() {
    }
}

解决方法

您的函数位于myfile1的myClass中。您必须从此类创建对象,并且可以在此类中的位置使用函数。我的英语能力不好,但您必须这样做:

int main(void){
    myClass myClassObject;
    myClassObject.function1();
    myClassObject.function2();
}

如果您不想从此类创建对象,则可以这样做:

myfile1.h:

#ifndef myfile1_h  
#define myfile1_h

#include <iostream>

using namespace std;

void function1();
void function2();

#endif

myfile1.cpp:

#include "myfile1.h"

void function1(){
    cout<<"function1"<<endl;
}

void function2(){
    cout<<"function2"<<endl;
}

和主要:

#include "myfile1.cpp"

int main(){
    function1();
    function2();


    return 0;
}

如果要在类中使用此功能,则可以在很好的情况下使用: myfile1.h

#ifndef myfile1_h  
#define myfile1_h

#include <iostream>

using namespace std;

class myClass{
    public: // If you want access these functions,you must use public tag.
            // If you dont use any tag,it will be private,because default tag is private.
    void function1();
    void function2();
};


#endif

myfile1.cpp

#include "myfile1.h"

void myClass::function1(){
    cout<<"function1";
}

void myClass::function2(){
    cout<<"function2";
}

主要:

#include "myfile1.h"

int main(){
    myClass myClassObject;
    myClassObject.function1();
    myClassObject.function2();
    
    return 0;
}

您的编译器或编辑器是什么?如果从终端编译该代码,则必须像这样编译它: g++ main.cpp myfile1.cpp

我的英语水平不好。但是我试图解释。