LINUX.ORG.RU

История изменений

Исправление rumgot, (текущая версия) :

Тут нужно понимать, что при компиляции main.cpp компилятор не заглядывает в .cpp файл в котором находится определение твоей auto-функции. Компилятор смотрит только в заголовочный файл. Ты можешь поместить определение функции за пределами класса, но в заголовочном файле, но тогда в пределах одной программы нельзя будет включить этот заголовочный файл куда-то еще. Думаю в твоем случае лучше использовать шаблон функции, там тоже можно использовать возвращаемый тип как auto и при этом можно будет включать заголовочный файл в разные места. И шаблонная функция может быть не inline (тут уж как компилятор решит). Ну т.е. сделай так:

#ifndef TEST_H
#define TEST_H

template <typename T = int> auto test() { return 5; }

#endif // TEST_H

И потом используй где хочешь:

#include "test.h"

int main() {
  test();
}

Исправление rumgot, :

Тут нужно понимать, что при компиляции main.cpp компилятор не заглядывает в .cpp файл в котором находится определение твоей auto-функции. Компилятор смотрит только в заголовочный файл. Ты можешь поместить определение функции за пределами класса, но в заголовочном файле, но тогда в пределах одной программы нельзя будет включить этот заголовочный файл куда-то еще. Думаю в твоем случае лучше использовать шаблон функции, там тоже можно использовать возвращаемый тип как auto и при этом можно будет включать заголовочный файл в разные места. И шаблонная функция может быть не inline. Ну т.е. сделай так:

#ifndef TEST_H
#define TEST_H

template <typename T = int> auto test() { return 5; }

#endif // TEST_H

И потом используй где хочешь:

#include "test.h"

int main() {
  test();
}

Исправление rumgot, :

Тут нужно понимать, что при компиляции main.cpp не компилятор не заглядывает в .cpp файл в котором находится определение твоей auto-функции. Компилятор смотрит только в заголовочный файл. Ты можешь поместить определение функции за пределами класса, но в заголовочном файле, но тогда в пределах одной программы нельзя будет включить этот заголовочный файл куда-то еще. Думаю в твоем случае лучше использовать шаблон функции, там тоже можно использовать возвращаемый тип как auto и при этом можно будет включать заголовочный файл в разные места. И шаблонная функция может быть не inline. Ну т.е. сделай так:

#ifndef TEST_H
#define TEST_H

template <typename T = int> auto test() { return 5; }

#endif // TEST_H

И потом используй где хочешь:

#include "test.h"

int main() {
  test();
}

Исправление rumgot, :

Тут нужно понимать, что при компиляции main.cpp не компилятор не заглядывает в .cpp файл в котором находится определение твоей auto-функции. Компилятор смотрит только в заголовочный файл. Ты можешь поместить определение функции за пределами класса, но в заголовочном файле, но тогда в пределах одной программы нельзя будет включить этот заголовочный файл куда-то еще. Думаю в твоем случае лучше использовать шаблон функции, там тоже можно использовать возвращаемый тип как auto и при этом можно будет включать заголовочный файл в разные места. И шаблонная функция может быть не inline.

Исправление rumgot, :

Тут нужно понимать, что при компиляции main.cpp не компилятор не заглядывает в .cpp файл в котором находится определение твоей auto-функции. Компилятор смотрит только в заголовочный файл. Ты можешь поместить определение функции за пределами класса, но в заголовочном файле, но тогда в пределах одной программы нельзя будет включить этот заголовочный файл куда-то еще. Думаю в твоем случае лучше использовать шаблон функции, там тоже можно использовать возвращаемый тип как auto и при этом можно будет включать заголовочный файл в разные места.

Исправление rumgot, :

Тут нужно понимать, что при компиляции main.cpp не компилятор не заглядывает в .cpp файл в котором находится определение твоей auto-функции. Компилятор смотрит только в заголовочный файл. Ты можешь поместить определение функции за пределами класса, но в заголовочном файле, но тогда в пределах одной программы нельзя будет включить этот заголовочный файл куда-то еще. Думаю в твоем случае лучше использовать шаблон функции.

Исходная версия rumgot, :

Тут нужно понимать, что при компиляции main.cpp не компилятор не заглядывает в .cpp файл в котором находится определение твоей auto-функции. Компилятор смотрит только в заголовочный файл. Ты можешь поместить определение функции за пределами класса, но в заголовочном файле, но тогда в пределах одной програмы нельзя будет включить этот заголовочный файл куда-то еще.