ich einige statische Funktionen in ihren eigenen .h und CPP-Dateien definiert haben, so können diese von anderswo ohne Notwendigkeit Instanziierung genannt werden:C++ const Member-Funktionen, nicht-Typ-Vorlagen und externe Symbole
functions.h
#pragma once
class functions {
public:
static const int addition(const int&, const int&);
static const int product(const int&, const int&);
};
functions.cpp
#include "functions.h"
const int functions::addition(const int& op1, const int& op2) {
return op1 + op2;
}
const int functions::product(const int& op1, const int& op2) {
return op1 * op2;
}
ich habe auch einen Abschnitt für die Programmeinstellungen erstellt, wo ich welche der Funktionen definieren wählen:
constants.h
#pragma once
const int modulus = 10;
extern const int(*operation)(const int&, const int&);
constants.cpp
#include "constants.h"
#include "functions.h"
const int(*operation)(const int&, const int&) = &functions::addition;
Dieser Code funktioniert wie erwartet mit dem folgenden Beispiel:
main.cpp
#include <iostream>
#include "constants.h"
int main() {
int a = 7, b = 4;
std::cout << operation(a,b) % modulus << std::endl;
}
Problem ist, jetzt möchte ich das fu parametrisieren nktionen hinaus und Produkt einer nicht-Typ-Vorlage verwenden, wie zum Beispiel:
functions.h
#pragma once
class functions {
public:
template<const int&> static const int addition(const int&, const int&);
};
functions.cpp
#include "functions.h"
template<const int& sub> const int functions::addition(const int& op1, const int& op2) {
return op1 + op2 - sub;
}
Der spätere Code bricht, egal wie ich versuche, anzupassen die anderen Dateien. Ich habe alles getan, was ich mir vernünftig (und sinnlos) vorstellen konnte.
Jede Hilfe zum Umschreiben des Codes auf Konstanten. * Wird sehr geschätzt.
Seitennotiz: Sie brauchen nicht diese erste Klasse. Wenn Sie einen separaten Namespace für Ihre Funktionen benötigen, verwenden Sie einen Namespace. – molbdnilo
Vielen Dank für Ihren Rat, aber die Klasse gruppiert andere Funktionen, die sich mit den gegebenen Funktionen befassen. Da sie in dem Problem keine Rolle spielten, entschied ich mich, sie vom minimalen Beispiel auszuschließen. – jvier
Ich sehe nicht, wie das ausgeht. Eine Klasse, die nur statische Member hat, ist eher eine Java-/C#/Smalltalk-Sache. – molbdnilo