コードの重複を避けるために、この汎用構造を構築したいと考えています。scaledown24 構造体内の numbers24 ベクトルを、scaledown32 構造体内の numbers32 ベクトルとは異なるものにしたいと考えています。そのため、私が変更を加えると、それらは互いに影響を与えることができなくなります。しかし、プログラムを実行すると、printAddress 関数は 2 つのベクトルのアドレスが同じであることを示しています。どうすればこれを修正できますか。ありがとう。
#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;
}