【发布时间】:2020-06-03 20:49:23
【问题描述】:
为了避免重复代码,我想构建这个通用结构。我希望 scaledown24 结构内的 numbers24 向量与 scaledown32 结构内的 numbers32 向量不同。所以当我做出改变时,他们将无法相互影响。但是当我运行程序时, printAddress 函数显示两个向量的地址是相同的。我怎样才能解决这个问题。谢谢。
#include <iostream>
#include <vector>
struct ScaleDown24{
static std::vector<int> getVector() {
std::vector<int> numbers24(3);
return numbers24;
};
static inline void printAddress(std::vector<int>sumNumbers ) {
std::vector<int> *p = &sumNumbers;
std::cout << p << "\n";
}
};
struct ScaleDown32{
static std::vector<int> getVector() {
std::vector<int> numbers32(4);
return numbers32;
};
static inline void printAddress(std::vector<int>sumNumbers ) {
std::vector<int> *p = &sumNumbers;
std::cout << p << "\n";
}
};
template<typename ScaleFunction>
void scaleDown(){
std::vector<int>sumNumbers = ScaleFunction::getVector();
ScaleFunction::printAddress(sumNumbers);
}
int main()
{
scaleDown<ScaleDown24>();
scaleDown<ScaleDown32>();
return 0;
}
【问题讨论】:
标签: c++