gpt4 book ai didi

c++ - 无法访问同一类型对象中的私有(private)成员

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:10 25 4
gpt4 key购买 nike

问题出在标题上,代码如下:

#include <iostream>
#include <cstring>

using namespace std;

template<typename T1, typename T2>
class Pair
{
T1 first;
T2 second;

public:
Pair(T1 _first = NULL, T2 _second = NULL) : first(_first), second(_second) {}
Pair(const Pair<T1, T2>& other) : first(other.first), second(other.second) {}
};

template<>
class Pair<char*, char*>
{
char* first;
char* second;
public:
Pair(char* _first = NULL, char* _second = NULL) : first(_strdup(_first)), second(_strdup(_second)) {}
Pair(const Pair<char*, char*>& other) : first(_strdup(other.first)), second(_strdup(other.second)) {}
};

int main()
{
Pair<short, char> pair;
Pair<char*, char*> pair2;
}

5 IntelliSense:成员“Pair::first”(在第 20 行声明)不可访问
6 IntelliSense:成员“Pair::second”(在第 21 行声明)不可访问

那又怎么样,这是不是模板类独占,以指针为数据成员,同类对象不能访问?解决方案是什么?我也试过创建返回这些指针的成员函数(在此构造函数之前),然后使用它们,但后来我遇到了一些其他错误。

不确定这是否是一个重复的问题,有一个标题相似的问题,但我不明白答案...

不建议使用 std::string 而不是 char*,如果可以的话我会的 ;)

最佳答案

代码没问题,IntelliSense 错了。

尽管您可能需要考虑这样一个事实,即并非所有类型都可以使用 NULL 进行初始化。如果您需要默认构造函数,请使用 Pair() = default;

关于c++ - 无法访问同一类型对象中的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867780/

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