c++ - 如何从 C++ 中的类文件运行函数?

标签 c++

我试图从一个类文件中运行一个函数,但它不工作,我收到以下错误消息: 错误 LNK1120:1 个 Unresolved external 问题

错误 LNK2019:未解析的外部符号“public:void __thiscall NS::Class1::test(void)”(?test@Class1@NS@@QAEXXZ) 在函数 _main 中引用

//Main.cpp

#include<iostream>
#include<string>
#include<Windows.h>
#include "Class1.h"

int main(){
    NS::Class1 E;
    E.test();
    return 0;
};


//Class1.cpp

#include <Windows.h>
#include <string>
namespace NS{
class Class1{
        Class1(){
            OutputDebugString(L"Created.");
        }

        void test(){
            OutputDebugString(L"Hello World");
        }
    };
}


//Class1.h

#ifndef _Class1_H_
#define _Class1_H_
namespace NS{
    class Class1{
        public:
            void test();
        };
}
#endif

最佳答案

在您的源文件中,您正在重新定义类,而不是定义其成员函数。这将产生未定义的行为,因为您只能定义一次类。源文件应该更像:

#include "Class1.h"
#include <Windows.h>

NS::Class1::Class1(){
    OutputDebugString(L"Created.");
}

void NS::Class1::test(){
    OutputDebugString(L"Hello World");
}

您还需要修改 header 中的类定义,因为它没有声明构造函数。

此外,请确保您的项目正在编译和链接这两个源文件。

关于c++ - 如何从 C++ 中的类文件运行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300504/

相关文章:

c++ - Ncurses 和 C++ 屏幕保护程序

c++ - 在可能的情况下,C++ 是否总是更喜欢右值引用转换运算符而不是 const 左值引用?

c++ - sprintf_s 崩溃

c++ - 检查子集是否包含给定子集列表的快速方法

c++ - C 喜欢数组语法?

C++模板编译错误: expected primary-expression before ‘>’ token

c++ - sleep_until 过去的某个时间点

c++ - 打印出存储在具有相同祖先的不同类的变量中的值

c++ - 检查字符串是否包含大写或小写字母

c++ - 编译器重新排序与内存重新排序