我有以下课程 -
class Matrix<T>
代表T
类型的对象矩阵,它是超类baseMAtrix
,它包含所有类型的{{1}共有的静态布尔变量parallel_
}。
我想访问Matrix<T>
,但似乎我的代码没有链接 -
parallel_
我收到了这条消息 -
class baseMatrix {
protected:
static bool parallel_;
};
template<class T>
class Matrix : baseMatrix{
public:
static void setParallel (bool parallel){
if(parallel != baseMAtrix::parallel_){
cout << "message" << endl;
}
baseMAtrix::parallel_ = parallel;
}
};
`CMakeFiles/ex3.dir/Tester.cpp.o:Tester.cpp:(.rdata$.refptr._ZN10baseMatrix9_parallelE[.refptr._ZN10baseMatrix9_parallelE]+0x0): undefined reference to `baseMatrix::_parallel'
collect2: error: ld returned 1 exit status`
文件是我调用Tester.cpp
-
setParallel
这是调用Matrix<int>::setParallel(true);
的正确方法吗?
这是访问setParallel
的正确方法吗?
答案 0 :(得分:0)
如果你想保持对标题友好,你可以将基类更改为模板:
template<class T>
class baseMatrix
{
protected:
static bool _parallel;
};
template<class T>
bool baseMatrix<T>::_parallel;
template<class T>
class Matrix : baseMatrix<void>
...
这样就不需要baseMatrix::_parallel
文件中的cpp
。