作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试编译时遇到此错误:
psort.cpp:11:17: error: variable or field ‘psort’ declared void
void psort(std::vector<T> * array)
我不太确定为什么会收到这个。我通读了其他一些关于相同错误的帖子,但它们对我根本没有帮助。
/**
* @file psort.h
*/
#ifndef _PSORT_H_
#define _PSORT_H_
#include <iostream>
#include <vector>
#include <omp.h>
using std::vector;
namespace ParallelSort
{
/**
* Public wrapper for the parallel sort implementation.
* @param array The structure to sort
*/
template <class T>
void psort(vector<T> * array);
template <class T>
vector<T> * mergeSort(vector<T> * array, int left, int right);
template <class T>
vector<T> * merge(vector<T> * arr1, vector<T> * arr2);
}
#include "psort.cpp"
#endif
这是 .cpp :
template <class T>
void psort(vector<T> * array)
{
mergeSort(array, 0, array->size() - 1);
}
template <class T>
vector<T> * mergeSort(vector<T> * array, int left, int right) {
if (left >= right) {
return array;
}
int midpoint = (left + right) / 2;
return merge(mergeSort(array, left, midpoint - 1), mergeSort(array, midpoint, right));
}
template <class T>
vector<T> * merge(vector<T> * arr1, vector<T> * arr2) {
vector<T> * result();
result->resize(arr1->size() + arr2->size());
int i = 0; // result array position
int j = 0; // arr1 position
int k = 0; // arr2 position
while (i <result->size() ) {
if (j >= arr1->size()) {
result[i] = arr2[k];
i++;
k++;
} else if (k >= arr2->size()) {
result[i] = arr1[j];
i++;
j++;
} else if (arr1[j] <= arr2[k]) {
result[i] = arr1[j];
i++;
j++;
} else if (arr2[k] <= arr1[j]) {
result[i] = arr2[k];
i++;
k++;
}
}
return result;
}
最佳答案
我认为这是因为您的 CPP 文件内容不在命名空间内。
在头文件中,您关闭了正确的 namespace 。因此,要将函数定义放入该命名空间,您需要再次打开它。
关于c++ - 变量或字段 'psort' 声明无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918013/
我在尝试编译时遇到此错误: psort.cpp:11:17: error: variable or field ‘psort’ declared void void psort(std::vector
我是一名优秀的程序员,十分优秀!