指向该类的类指针成员:未解析的外部符号
Posted
技术标签:
【中文标题】指向该类的类指针成员:未解析的外部符号【英文标题】:Class pointer member pointing to that class: unresolved external symbol 【发布时间】:2016-11-21 04:14:36 【问题描述】:我有以下标头和源代码 声明一个带有成员变量的类。成员变量是指向该类的智能指针。当我尝试为指针赋值时,程序无法构建并出现错误:未解析的外部符号。有人可以向我解释为什么会这样吗?
Header.h
#pragma once
#include <mutex>
using namespace std;
class myClass
public:
static shared_ptr<myClass> ptr;
;
class myClass2 : public myClass
;
Class.cpp
#include "stdafx.h"
#include "Header.h"
#include <utility>
int main()
myClass instance1;
myClass instance2;
myClass2 instance3;
instance2.ptr = make_shared<myClass>(instance3);
return 0;
【问题讨论】:
您能否发布您收到的确切错误消息,即它说的是哪个符号未定义? 【参考方案1】:在您的代码中,ptr 是一个类变量而不是一个实例变量,因为您在 header.h 中将它定义为静态的。如果要将 ptr 成员视为实例成员,则应删除静态声明。
【讨论】:
【参考方案2】:声明static
成员通常需要您在类外部为static
成员分配存储空间。更多信息在这里:
http://en.cppreference.com/w/cpp/language/static
添加一个
shared_ptr<myClass> myClass::ptr;
到您的一个 cpp 文件来分配存储空间。
但是您将static
成员用作实例成员,这让人怀疑您是否根本不需要static
成员。
【讨论】:
以上是关于指向该类的类指针成员:未解析的外部符号的主要内容,如果未能解决你的问题,请参考以下文章