gpt4 book ai didi

c++ - Call Base 默认构造函数模板类

转载 作者:行者123 更新时间:2023-11-30 02:49:30 24 4
gpt4 key购买 nike

<分区>

问题是如何从继承的模板类中调用基本构造函数。我想创建一个 FixedQueue 并重载 std::queue 中的一些函数。因此 std:queue 是基类。从 c++11 开始,关键字 using 可用于调用基类,如果这是一个专门的类,它就可以工作,但我无法让它与模板类一起工作。

此外,我还尝试使用旧的 C++ 标准,在该标准中我只调用 std::queue 中定义的构造函数。但是它不起作用。

文件

#ifndef _HEADER_FIXED_QUEUE_
#define _HEADER_FIXED_QUEUE_

#include <queue>
#include <iostream>

template<class T>
class FixedQueue : public std::queue<T>
{
//using queue<T>::queue<T>;

public:
FixedQueue();
FixedQueue(const T &initial_var);
void foo() { std::cout << "inside\n"; }

};

#endif

cpp文件

#include "FixedQueue.h"

template<typename T>
FixedQueue<T>::FixedQueue()
:
std::queue<T>()
{
std::cout << "Default Constructor FixedQueue\n";
}

template<typename T>
FixedQueue<T>::FixedQueue(const T &initial_var)
:
std::queue<T>(initial_var)
{
std::cout << "Specialized Constructor FixedQueue\n";
}

主文件。

#include <iostream>
#include "FixedQueue.h"

int main()
{
FixedQueue<int> d_frameSlices;


std::cout << "I want to do something with my queue\n";
}

问题是这样的。如何将构造函数链接到基类 std::queue 中定义的构造函数。模板的东西快要死了。

这是我从clang得到的错误信息,就是通常的undefined reference。

Undefined symbols for architecture x86_64:
"FixedQueue<int>::FixedQueue()", referenced from:
_main in main-lqoFSA.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果有人知道如何通过“使用”或旧时尚方式做到这一点,我对两者都很满意。提前致谢

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com