gpt4 book ai didi

c++ - 为什么我不能在我的类中内联函数?

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:02 27 4
gpt4 key购买 nike

<分区>

我正在通过编写通用数据结构来学习 C++,但我有一个编译器警告我的内联添加方法未定义。

src/vector.h:10:14: warning: inline function 'Vector::add' is not defined
[-Wundefined-inline]
inline void add(const float val);

我做错了什么?据我所知,这些方法是匹配的。但是,如果我删除内联方法,它可以正常工作,但第一次调用 add 需要 11380us,但第二次和第三次大约需要 3667us - 接近 4 倍的惩罚成本。

src/vector.h

//#include <cstddef>

class Vector {
public:
explicit Vector(const int n);
explicit Vector(const int n, const float val);
float& operator[](const int i);
inline int const length();
inline void fill(const float val);
inline void add(const float val);
inline float sum();
private:
float* arr;
int len;
};

源文件.cpp

#include "vector.h"
#include <iostream>
#include <algorithm>
#include "yepCore.h"
#include "yepMath.h"
#include "yepLibrary.h"
#include <cstdlib>

using namespace std;

inline void Vector::add(const float val)
{
chrono::steady_clock::time_point start = chrono::steady_clock::now();
for (int i = 0; i < len; ++i) {
arr[i] += val;
}
chrono::steady_clock::time_point end = chrono::steady_clock::now();
cout << "yepp add took " << chrono::duration_cast<chrono::microseconds>(end - start).count()
<< "us.\n";
}

/**
template <>
void Vector<float>::add(const float val)
{
chrono::steady_clock::time_point start = chrono::steady_clock::now();
yepCore_Add_V32fS32f_V32f(arr, val, arr, len);
chrono::steady_clock::time_point end = chrono::steady_clock::now();
cout << "yepp add took " << chrono::duration_cast<chrono::microseconds>(end - start).count()
<< "us.\n";

}
...

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com