冲突的声明类型/价值不匹配
Conflicting declaration type/value mismatch
我完全无法解决汇编错误:
#include <iostream>
#include <boost/lockfree/queue.hpp>
class C
{
public:
static int size;
};
int C::size = 10;
template <class temp>
class B: public temp
{
class A
{
public:
static A pool[temp::size];
static boost::lockfree::queue<A*> mpool;
static bool firstTime;
};
public:
void show() { std::cout << "Called Show" << std::endl; }
};
template <class temp>
bool B<temp>::A::firstTime = true;
template <class temp>
typename B<temp>::A B<temp>::A::pool[temp::size];
template <class temp>
boost::lockfree::queue<B<temp>::A*> B<temp>::A::mpool(temp::size);
int main()
{
B<C> d;
d.show();
}
它在下面说明错误 - 我努力但无法解决问题 - 需要帮助:
test11.cpp:37:39: error: type/value mismatch at argument 1 in template parameter list for 'template<class T, class A0, class A1, class A2> class boost::lockfree::queue'
boost::lockfree::queue<B<temp>::A*> B<temp>::A::mpool(temp::size);
^
test11.cpp:37:39: error: expected a type, got '(B<temp>::A * <expression error>)'
test11.cpp:37:58: error: invalid type in declaration before '(' token
boost::lockfree::queue<B<temp>::A*> B<temp>::A::mpool(temp::size);
^
test11.cpp:37:58: error: conflicting declaration 'int B<temp>::A::mpool'
test11.cpp:21:40: note: previous declaration as 'boost::lockfree::queue<B<temp>::A*> B<temp>::A::mpool'
static boost::lockfree::queue<A*> mpool;
^
test11.cpp:37:58: error: declaration of 'boost::lockfree::queue<B<temp>::A*> B<temp>::A::mpool' outside of class is not definition [-fpermissive]
boost::lockfree::queue<B<temp>::A*> B<temp>::A::mpool(temp::size);
您在此处缺少打字名称。
template<class T> boost::lockfree::queue<typename B<T>::A*> B<T>::A::mpool(T::size);
B<T>::A
是类型名称并不明显。
相关文章:
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- 错误:"模板<类_Tp,类_Dp>类 std::unique_ptr"的模板参数列表中参数 1 的类型/值不匹配
- 将 unordered_map 与 Catch2 谓词一起使用时类型不匹配
- 错误:'operator>'不匹配(操作数类型为 'Student' 和 'Student'
- 与"运算符>>"不匹配(操作数类型为"QDataStream"和"QJsonObject")
- 与'operator<<'不匹配(操作数类型'std::ostream {aka std::basic_ostream<char>}'
- 不同c++编译器之间的自动类型推导不匹配
- 重载函数的地址与所需类型不匹配
- 与"operator<<"不匹配(操作数类型'std::ostream'
- 参数错误可能与类型不匹配有关?
- 作为模板类型参数,为什么 type[N] 与其专用版本不匹配----模板<类 T>类 S<T[]>
- 模板参数列表中参数 3 处的类型/值不匹配
- C++ 重载:[错误] 与'operator='不匹配(操作数类型为 'String' 和"字符串")
- 调用子例程时类型不匹配
- 如果方法不进行类型检查,为什么C++模板匹配?
- 错误:与"运算符>>"不匹配(操作数类型为"std::istream
- 与"运算符[]"不匹配(操作数类型为"std::unique_ptr<std::vector<int> >"和"int")
- 错误:与'operator='不匹配(操作数类型为 'PlDrustvo' 和"PlDrustvo")|
- 警告 634:相等或有条件的强类型不匹配(类型"bool")