Определение встроенной функции должно быть в каждой единице компиляции, где используется ODR.
С другой стороны, в вашем проекте main модуля компиляции не знает, что эта функция является встроенной функцией. Поэтому он не может найти свое определение.
Переместите это определение из Test.cpp
#pragma once
class Test
{
public:
void print40();
};
inline void Test::print40()
{
std::cout << "40";
}
в заголовок Test.h
.
Модуль Test.cpp
является избыточным .
Поскольку функция очень простая и короткая, ее можно определить в определении класса, например,
class Test
{
public:
void print40()
{
std::cout << "40";
}
};
В этом случае она будет встроенной функцией по умолчанию.