C++ 将不同的对象传递给函数

C++ 将不同的对象传递给函数,c++,object,C++,Object,我有一个带有以下代码的头文件(此处简化): class mark1 { public: double ID; }; class remap { public: void tstfunc(mark1& M); }; 在相应的cpp文件中,我有一个简单的函数,例如: void tstfunc(mark1& M) { cout << M.ID << endl; } 我必须如何重写tstfunc才能使用这两个类执

我有一个带有以下代码的头文件(此处简化):

class mark1
{
 public:
    double   ID;
};

class remap
{
public:
    void tstfunc(mark1& M);
};
在相应的cpp文件中,我有一个简单的函数,例如:

void tstfunc(mark1& M)
{        
    cout << M.ID << endl;
}
我必须如何重写tstfunc才能使用这两个类执行主函数中的函数

最后,我想这样做:

...
int main
{
    M1 mark1;
    M2 mark2;

    tstfnc(mark1)
    tstfnc(mark2)

    ...
}

这可能吗?

如果两个标记类都没有公共基类,您可以使用模板编程的功能:

template<typename T> void tstfunc(const T& M)
{
    cout << M.ID << endl;
}
模板无效tstfunc(常量T&M)
{

这行得通吗?编译器怎么知道你只会给它一个
ID
字段的
T
s?使用接口会更好吗?(就我个人所知)@Jashaszun如果你给它任何东西,编译器会告诉你的。@EOI首先要看情况。如果他们已经有一个带有ID字段的公共基类,我会选择使用它。因为他们没有,我不会只为这种情况创建一个。你的
tstfunc
有一个引用,它没有引用任何东西。这不应该编译。最好发布一些更现实的代码。我被
tstfunct()
所困扰,它在
类remap
中声明为成员,但没有定义,并且是自立的
tstfunct()
定义时没有参数,您用参数调用它。这里缺少一些东西。我非常担心
双精度
被用作
ID
。您知道浮点数在等式/顺序上可能有麻烦的行为吗?如果它是整数,您可以使用
int64_t
uint64_t
和一个
std::string
允许您将ID视为不透明的字节序列。
template<typename T> void tstfunc(const T& M)
{
    cout << M.ID << endl;
}