重新定义静态库的成员函数?

时间:2013-12-05 17:58:13

标签: c++ class override static-libraries member-functions

我想我的问题很简单但我找不到任何解决方案:

我可以在静态库中重新定义类的成员函数吗?

实施例

我的图书馆看起来像这样:

Library.h

namespace mynamespace
{
     class A
     {
       public:   void randomfunction();
     }
}

Library.cpp

namespace mynamespace
{
    void A::randomfunction(){
       std::cout << "Random output!" << std::endl;
    }
}

我使用此库的程序:

的main.cpp

using namespace mynamespace;

void A::randomfunction(){
  std::cout << "Super fancy output!" << std::endl;
}

int main(int argc, char* argv[])
{
    A a;
    a.randomfunction();
    system("pause");
    return 0;
}

包括库工作正常,如果我不重写该函数我的程序编译并正常工作。 问题是我需要大多数程序的正常版本,但有时我需要它做其他的东西,我不能使用继承,因为我在这个库中有其他类引用这个类,我也不想使其他类通用,因为即使我不想覆盖函数,我总是必须使用继承:/

1 个答案:

答案 0 :(得分:2)

如果您在静态库中定义一个函数,而在其他一个源文件中又有所不同,则会违反one definition rule