为什么我不能调用operator()?

时间:2018-01-13 13:37:40

标签: c++

我试图通过示例了解C ++中的不同主题,但我无法使用此示例:

         <button class="tabs" id="my-tabid1" data-target=".my-section1.box">Tab 1</button>
         <button class="tabs" id="my-tabid2"  data-target=".my-section2.box">Tab 2</button>
         <button class="tabs" id="my-tabid3" data-target=".my-section3.box">Tab 3</button>


        <div class="my_section1 box active" id="my-tab1">
           <?php echo do_shortcode ('[shortcode-1]'); ?>
        </div>

        <div class="my-section2 box" id="my-tab2">
          <?php echo do_shortcode ('[shortcode-1]'); ?>
        </div>

        <div class="my-section3 box" id="my_tab3">
           <?php echo do_shortcode ('[shortcode-1]'); ?>
        </div>
<style>
.box {
  display: none;
}
.box.active {
  display: block;
}
</style>
        <script>
        $('.tabs').on('click', function(){
          var $target = $($(this).data('target'));
          $target.siblings().removeClass('active');
          $target.addClass('active');
        });
    </script>

我显然试图调用operator()但是它给出了错误:&#34;调用类类型的对象而没有适当的operator()&#34;

1 个答案:

答案 0 :(得分:1)

您意外地实施了类型转换运算符,而不是document.getElementById("idName");。像这样重载operator()(我删除了返回值,因为你无论如何都放弃了operator()):

main

如果您确实需要返回值,请执行以下操作:

#include <iostream>

template<typename T>
class zero_init
{
    T val;
public:
    zero_init() : val(static_cast<T>(0)) { std::cout << "In constructor with no parameters\n"; }
    void operator()() const { std::cout << "In operator()\n"; }
};

int main()
{
    const zero_init<int> x;
    x();
    return 0;
}