如何将自定义类传递给std::cout? 我试图编写一个C++程序,但我很难与拷贝赋值部分进行斗争。这是我的密码: #include <iostream> using namespace std; class CarCounter { public: CarCounter(); CarCounter& operator=(const CarCounter& objToCopy); void SetCarCount(const int setVal) { carCount = setVal; } int GetCarCount() const { return carCount; } private: int carCount; }; CarCounter::CarCounter() { carCount = 0; } // FIXME write copy assignment operator /* Your solution goes here */ CarCounter& CarCounter::operator=(const CarCounter& objToCopy) { CarCounter nobj; cout << objToCopy.carCount << endl; nobj.carCount = objToCopy.carCount; cout << nobj.carCount << endl; cout << *this << endl; return *this; } int main() { CarCounter frontParkingLot; CarCounter backParkingLot; frontParkingLot.SetCarCount(12); backParkingLot = frontParkingLot; cout << "Cars counted: " << backParkingLot.GetCarCount(); return 0; } #包括 使用名称空间std; 类计数器{ 公众: CarCounter(); CarCounter和operator=(const CarCounter和objToCopy); void SetCarCount(const int setVal){ carCount=setVal; } int GetCarCount()常量{ 返回车辆计数; } 私人: 国际汽车计数; }; CarCounter::CarCounter(){ carCount=0; } //FIXME写入副本分配运算符 /*你的解决方案在这里*/ CarCounter和CarCounter::operator=(const CarCounter和objToCopy){ 卡诺布; cout

如何将自定义类传递给std::cout? 我试图编写一个C++程序,但我很难与拷贝赋值部分进行斗争。这是我的密码: #include <iostream> using namespace std; class CarCounter { public: CarCounter(); CarCounter& operator=(const CarCounter& objToCopy); void SetCarCount(const int setVal) { carCount = setVal; } int GetCarCount() const { return carCount; } private: int carCount; }; CarCounter::CarCounter() { carCount = 0; } // FIXME write copy assignment operator /* Your solution goes here */ CarCounter& CarCounter::operator=(const CarCounter& objToCopy) { CarCounter nobj; cout << objToCopy.carCount << endl; nobj.carCount = objToCopy.carCount; cout << nobj.carCount << endl; cout << *this << endl; return *this; } int main() { CarCounter frontParkingLot; CarCounter backParkingLot; frontParkingLot.SetCarCount(12); backParkingLot = frontParkingLot; cout << "Cars counted: " << backParkingLot.GetCarCount(); return 0; } #包括 使用名称空间std; 类计数器{ 公众: CarCounter(); CarCounter和operator=(const CarCounter和objToCopy); void SetCarCount(const int setVal){ carCount=setVal; } int GetCarCount()常量{ 返回车辆计数; } 私人: 国际汽车计数; }; CarCounter::CarCounter(){ carCount=0; } //FIXME写入副本分配运算符 /*你的解决方案在这里*/ CarCounter和CarCounter::operator=(const CarCounter和objToCopy){ 卡诺布; cout,c++,c++11,c++14,C++,C++11,C++14,您无法将自定义类传递给cout。错误基本上是说您的类CarCounter不兼容,无法通过管道传送到cout。似乎该行完全不需要,可以删除。您的复制分配操作符应该如下所示: CarCounter& CarCounter::operator=(const CarCounter& objToCopy) { carCount = objToCopy.carCount; return *this; } 你期望他最有可能将这些用于调试目的…我认为。半相关:CarCounter满

您无法将自定义类传递给
cout
。错误基本上是说您的类
CarCounter
不兼容,无法通过管道传送到
cout
。似乎该行完全不需要,可以删除。

您的复制分配操作符应该如下所示:

CarCounter& CarCounter::operator=(const CarCounter& objToCopy) {
   carCount = objToCopy.carCount;
   return *this;
}

你期望
他最有可能将这些用于调试目的…我认为。半相关:
CarCounter
满足的要求。不需要赋值运算符。你可以省略它或在类中声明为
CarCounter&operator=(const-CarCounter&objToCopy)=default;
以明确类使用默认赋值逻辑。编译器应该如何知道如何打印
计数器
?如果您希望能够直接使用
,请给您的问题一个更具描述性的标题。几乎所有的问题都是关于如何解决问题的,因此这是无用的。谢谢您的clari我把另一个标记为答案,但这实际上解释了原因。