我有一个noob问题,非常感谢回答为什么我在头文件中定义的方法对调用类不可见。我在网上进行了研究,他们都说它应该像现在一样运作。
的main.cpp
#include "sort.h"
#include <stdio.h>
#include <vector>
int main(int argc, char* argv[]){
std::vector<int> insertionVector = sort::insertionSort(data, sizeof(data) / sizeof(int));
sort.h
#include<vector>
namespace sort{
int* bubbleSort(const int *data, int size);
std::vector<int> insertionSort(const int *data, int size);
void swapValues(int* bigger, int* smaller){
*bigger += *smaller;
*smaller = *bigger - *smaller;
*bigger = *bigger - *smaller;
}
}
InsertionSort.cpp
#include<vector>
namespace sort{
std::vector<int> insertionSort(const int *data, int size){
std::vector<int> values(data,data+size);
for (int i = 1; i < values.size(); ++i){
int j = i;
while (j>0 && values.at(j - 1) > values.at(i)){
swapValues(&values.at(j-1),&values.at(j));
j--;
}
}
return values;
}
}
我已尝试在sort.h中内联swapValues方法,但它没有任何区别,swapValues的InsertionSort.cpp中的调用表示&#34;错误C3861:&#39; swapValues&#39;:未找到标识符。当它位于名称空间并包含名称空间时,为什么看不到该方法呢? 感谢您抽出时间帮助我!
答案 0 :(得分:1)
InsertionSort.cpp
需要包含sort.h
才能获得swapValues
的声明。
答案 1 :(得分:0)
您需要在InsertionSort.cpp中包含sort.h
#include "sort.h"
using namespace sort;