首页 > 解决方案 > 对类函数的未定义引用

问题描述

我正在处理 oop 并且无法理解出了什么问题。当我尝试编译代码时,我收到下一条消息:未定义对“N::my_class::do_something()”的引用。代码来自微软:https:
//docs.microsoft.com/en-us/cpp/cpp/header-files-cpp?view= msvc-160 my_class.h 文件:

namespace N
{
    class my_class
    {
    public:
        void do_something();
    };

}

my_class.cpp 文件:

#include "my_class.h" // header in local directory
#include <iostream> // header in standard library

using namespace N;
using namespace std;

void my_class::do_something()
{
    cout << "Doing something!" << endl;
}

my_program.cpp 文件:

#include "my_class.h"

using namespace N;

int main()
{
    my_class mc;
    mc.do_something();
    return 0;
}

标签: c++

解决方案


您的代码在 g++ 8.4.0 上适用于我。

using namespace N;可能不足以为您的编译器在 N 中声明成员函数。尝试在您的 cpp 文件中内联或使用命名空间范围指定命名空间。

编辑:最有可能的问题。my_class.cpp 未编译或链接。检查你的编译参数。


推荐阅读