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;
}